2012-09-28 55 views
2

我已經看到了創建片段的不同方法。有人可以告訴我什麼是方法之間的區別,什麼是最好的方法和什麼時候使用哪個。如何在Android中正確創建片段實例

  1. new MyFragment()我自己用這個,因爲這對我來說很自然。
  2. MyFragment.instantiate(Context context, String fname, Bundle args)這看起來像一個自定義的靜態方法來創建一個片段,但我從來沒有見過它使用。
  3. My.Fragment.newInstance()這是一個Android開發人員示例。

什麼是每個選項的目的?

回答

4

最不同的是,當使用每個樣品:

1-創建每個調用時一個新的片段的對象。

2-與調用空構造函數相同,但是,如果將片段設置爲setRetainInstance(true),那麼如果使用空構造函數,這將不起作用。

3- My.Fragment.newInstance(),從靜態片段中獲取單個實例的方法,如果您有一個靜態類擴展片段,您可以創建一個Method來返回一個新片段或當前片段,它的單身模式。

4-從xml中膨脹,與調用空構造函數相同,Android FrameWork負責附加視圖,但實例將保持空洞活動生命週期,需要更多內存並且不能多次重用。

+0

謝謝,你能否詳細說明3)? - 我真的不明白。所以我猜數字2)是優雅的方式,因爲它尊重RetainInstance,你也可以設置額外的。 –

+0

是的,第二個是最優雅的,但是兼容性包中有一些錯誤,需要重新創建一些片段,因此在意圖上傳遞params可能不起作用,例如當應用程序來自後臺時,操作系統可能需要重新創建片段,無額外。我一直在使用ParentActivity來保存參數。 –