繁体   English   中英

在片段中显示ListFragment

[英]Showing ListFragment within Fragment

我正在尝试显示一个ListFragment,它将显示另一个Fragment中的用户评论。 出于测试目的,我从父Fragment内使用“ onClick”方法调用ListFragment。 但是,我似乎无法显示ListFragment,因为它没有“ show”方法。 我的代码是否有任何明显的问题可以解决?

这是我单击按钮以显示ListFragment时调用的方法。

private void showComments(JSONArray comments) {
    ListFragment newFragment = CommentsFragment.newInstance(comments);
}

这是ListFragment本身。

public class CommentsFragment extends ListFragment {

public static CommentsFragment newInstance(JSONArray passedComments) {
    CommentsFragment f = new CommentsFragment();
    ArrayList<String> adapter = convertJSON(passedComments);
    Bundle args = new Bundle();
    args.putStringArrayList("adapter", adapter);
    f.setArguments(args);
    return f;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle args = new Bundle();
    ArrayList<String> commentsArray = args.getStringArrayList("adapter");
    ArrayAdapter<String> commentsAdapter = new ArrayAdapter<String>(  
             getActivity(), R.layout.comments_list,  
             commentsArray);  
    setListAdapter(commentsAdapter);
}

您必须使用FragmentManager提交ListFragment,并且还必须在XML中包含一个布局来包含它。

首先,在要放置ListFragment的XML上添加一个FrameLayout,然后使用getChildFragmentManager()获得一个FragmentManager,可以将ListFragment放在其中。

这样尝试

private void showComments(JSONArray comments) {
        ListFragment newFragment = CommentsFragment.newInstance(comments);
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(android.R.id.content, newFragment);
        fragmentTransaction.commit();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM