2013-06-30 87 views
0

Fragment有一個名爲getActivity()的方法,該方法返回片段當前關聯的活動。在片段中保存活動實例

不使用此方法是否安全,而是將Activity實例保存在onAttach(Activity)方法中?

例如,改變從:

public class MyFragment extends Fragment { 
    public void foo() { 
     ((MainActivity) getActivity()).foo(); 
    } 
} 

到:

public class MyFragment extends Fragment { 
    private MainActivity activity; 
    public void onAttach(Activity activity) { 
     this.activity = (MainActivity) activity; 
    } 
    public void foo() { 
     this.activity.foo(); 
    } 
} 

是否有這兩種方法之間的差異?哪個更好?

PS。第二種方法的一個好處是,每次使用活動時都不必進行類型轉換(如(MainActivity) getActivity())。但是我不知道保存活動實例是否安全。

+0

同樣的事情。在onAttach()中引用活動可能會更優雅,以防您想要將某些內容傳回活動。 –

回答

1

是的,沒關係。我這樣做幾乎總是避免每次調用方法getActivity()和投射結果(​​以獲得更好的性能和更好的代碼)