2014-02-17 28 views
0

正如每位Android開發人員所知道的,每當您創建自定義Fragment時,您都不會使用它的構造函數,正如文檔所述。因此,要做到這一點的方式更像是以下幾點:爲什麼Fragment通過工廠方法實例化?

public static BlankFragment newInstance(String param1, String param2) { 
    BlankFragment fragment = new BlankFragment(); 
    Bundle args = new Bundle(); 
    args.putString(ARG_PARAM1, param1); 
    args.putString(ARG_PARAM2, param2); 
    fragment.setArguments(args); 
    return fragment; 
} 
public BlankFragment() { 
    // Required empty public constructor 
} 

是否有Fragment什麼特別的原因,通過工廠方法實例化?

+0

簡單的關聯關係是類本身內部的對象的功能。你甚至可以把這個外面。 – Triode

回答

1

這樣你就可以將所有的初始化代碼保存在一個地方,碎片通常用在許多活動中,所以這樣的工廠方法可以確保你不會錯過任何新增的參數。

其實你可以添加構造函數到你的片段,並將你的newInstance代碼移動到它。問題在於android在你的片段重新創建時不會使用它,所以這樣的構造函數可能會混淆一些編碼器。另一方面,如果您希望創建參數少的newInstance()工廠方法,該方法將使用具有某個init值的setArguments,那麼您無法將其更改爲構造函數版本,因爲android將在調用期間更少的構造函數片段娛樂。

你可以閱讀更多在這裏:

http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html

相關問題