我想更好地理解接口,活動和片段的相互作用。如何在深嵌套鏈中的片段之間進行通信?
根據this link from the Android documentation:
通常你會想要一個片段與另一個通信, 例如更改基於用戶事件的內容。全部 片段與片段之間的通信通過關聯的 活動完成。兩個碎片不應該直接通信。
他們舉這個例子:
public class HeadlinesFragment extends ListFragment {
OnHeadlineSelectedListener mCallback;
// Container Activity must implement this interface
public interface OnHeadlineSelectedListener {
public void onArticleSelected(int position);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
...
}
如何做到這一點的變化,如果你正在處理的片段的嵌套鏈?
例如,假設我有一個活動,其中包含一個片段,然後將該片段包含在另一個片段等方面予以明確:
Activity --> Fragment1 --> Fragment2 --> Fragment3 --> Fragment4 --> Fragment5
我想明白了公認的最佳實踐執行以下操作:
假設Fragment5有一個EditText,並連接到它的OnClickListener的按鈕。我按下按鈕,該EditText的內容以某種方式發送到Fragment3中的函數。
我的問題:
我認爲我們需要在例如向上頂,這意味着活動歸途中前應實現該接口來定義Fragment5接口/聽衆喜歡,因爲根據文檔,活動應該傳遞碎片之間的信息。
但是現在,從這個活動中,我們如何將信息傳遞給Fragment3?
使用'Bundle'來傳輸數據,當你用新的片段'setArguments'來替換舊的片段將會幫助你。 –
@AnshulTyagi這與我的問題無關 - 我不是在問Factory模式。我在問你如何將一些孩子的信息從少數父母那裏轉移出去。 –
您可以使用第三方庫,如Otto –