0

我試圖顯示一個ListFragment,它將顯示用戶在另一個片段中的評論。出於測試目的,我使用父Fragment中的「onClick」方法調用ListFragment。但是,我似乎無法獲得ListFragment顯示,因爲它沒有「顯示」方法。我的代碼中是否有任何明顯的問題可以解決?在片段內顯示ListFragment

這是當我點擊一個按鈕來顯示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); 
} 

回答

0

您必須提交帶有FragmentManager的ListFragment,並在XML中包含將包含它的佈局。

首先將一個FrameLayout添加到放置ListFragment的XML中,然後使用getChildFragmentManager()獲取一個FragmentManager,您可以放置​​ListFragment。

+0

內的FrameLayout的XML,我應該有一個ListView或TextView的? –

+0

它應該只是一個帶有ID的空框架佈局,用作容器 –

+0

不幸的是,只是將listfragment放置在當前片段的頂部。 –

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

R.id.content標籤有什麼用處?我已經用'R.layout.comments_list'填充了CommentsFragment。 –

+0

@MilesPeele R.id.content是保存視圖的根佈局..所以請使用R.layout.comments_lis代替R.id.content。 –

+0

對,這就是我的想法。當我這樣做時,我得到了「沒有發現id」異常。 –