3

我有默認的主 - 明細流程,它在創建新項目時自動創建。我的問題是。當我添加一個按鈕來詳細的一面。有沒有辦法通過按下該按鈕來更新我的列表?換句話說,ItemDetailFragment和ItemListFragment可以通信嗎?碎片之間的通信

+0

只是看看它http://stackoverflow.com/a/37701651/1153703 –

回答

6

是的,只是通過活動與聽衆進行交流。

您的活動:

public class MyActivity extends FragmentActivity implements OnFragmentClickListener { 
    @Override 
    public void OnFragmentClick(int action, Object object) { 
     switch(action) { 
     } 
    } 
} 

監聽器類:

public interface OnFragmentClickListener { 
     public void OnFragmentClick(int action, Object object); 
    } 

您的片段屆時將有以下某處代碼,以實現接口:

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      mListener = (OnFragmentClickListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + " must implement listeners!"); 
     } 
    } 

然後你片段如下所示彼此通信:fragmentA→activity→fragmentB。您的活動可以直接在碎片上調用methodes,而不用擔心同步問題。從片段呼叫

例一:

mListener.OnFragmentClick(GLOBAL_ACTION_KEY someObject); 

活動,則處理:

public class MyActivity extends FragmentActivity implements OnFragmentClickListener { 
    @Override 
    public void OnFragmentClick(int action, Object object) { 
     switch(action) { 
      case GLOBAL_ACTION_KEY: 
       // you call fragmentB.someMethod(); 
       break; 
     } 
    } 
} 
+0

哪一個呢你的片段坐在嗎?如果片段在他們的活動中,你可能會考慮通過靜態類或類似的東西進行交流。你能否描述你的層次結構是怎樣的? – Warpzit

+0

謝謝,它工作得很好,你真的做了我的一天。 – slezadav