在Fragment中显示ListFragment

时间:2014-07-20 15:23:27

标签: android android-fragments android-listview android-listfragment

我正在尝试显示一个ListFragment,它将在另一个片段中显示用户评论。出于测试目的,我使用父片段中的“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);
}

2 个答案:

答案 0 :(得分:0)

您必须使用FragmentManager提交ListFragment,并在XML中包含将包含它的布局。

首先将FrameLayout添加到要放置ListFragment的XML中,然后使用getChildFragmentManager()获取FragmentManager,可以放置ListFragment。

答案 1 :(得分:0)

试试这个

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();
    }