簡體   English   中英

在Fragment的onAttach(活動)中存儲活動

[英]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的私有成員並不是一個好習慣。

有一些原因:

  1. Fragment旨在創建靈活的UI,並可以在不同的活動之間共享。 硬編碼活動類會損害可重用性。

  2. 如果以后要調用某些活動函數,可以定義包含所有必需函數的接口MyInterface 然后讓MyActivity實現MyInterface並將MyInterface存儲為片段成員,就像Android教程一樣: http//developer.android.com/guide/components/fragments.html

  3. 更重要的是,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM