![](/img/trans.png)
[英]Why onAttach() necessary for communication between activity and fragment?
[英]Store activity in Fragment's onAttach(Activity)
我想在片段中調用Activity的一些功能。 為方便起見,我計划將onAttach(Activity activity)
傳遞的活動存儲為Fragment類成員。
我知道getActivity()
也可以做同樣的工作。 我是Android新手,想知道這是不好的做法。 一些代碼喜歡:
class MyFragment extends Fragment {
private MyActivity mActivity;
public void onAttach (Activity activity){
super.onAttach(activity);
mActivity = (MyActivity) activity;
}
}
如果我這樣做,請建議。 請告訴我這種方法的缺點。
正如您所提到的,因為getActivity()
可以做同樣的工作,我認為將MyActivity
存儲為Fragment的私有成員並不是一個好習慣。
有一些原因:
Fragment旨在創建靈活的UI,並可以在不同的活動之間共享。 硬編碼活動類會損害可重用性。
如果以后要調用某些活動函數,可以定義包含所有必需函數的接口MyInterface
。 然后讓MyActivity
實現MyInterface
並將MyInterface
存儲為片段成員,就像Android教程一樣: http : //developer.android.com/guide/components/fragments.html
更重要的是,Android的片段實現包含FragmentActivity mActivity
,因此重復的動態定義可能會導致潛在的問題。 請檢查: http : //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/support/v4/app/Fragment.java#Fragment
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.