Q
片段和工廠方法
4
A
回答
3
使用靜態工廠方法不只是片段,我用它來創建意圖,適配器和其他類也是如此。通過這種方法,您只需控制對象創建。
其中一個很好的優點是你只需通過封裝捆綁鍵來增加內聚力。
class FragmentFoo extends Fragment{
}
當你想束從外部
// Activity Foo
Bundle bundle = new Bundle();
bundle.putString("name","Foo");
Fragment fragment = new FragmentFoo();
fragment.setArgs(bundle);
發送到這個片段提取這個名字,你需要使用「名」在片段密鑰爲好,如果你把它當作硬編碼,你可能會有一些錯誤,錯別字。所以你可以使用一個常量來確保你不會輸入錯字。但在這種情況下,你需要把它放在可以看到它的地方。有些人創建了另一個班級,以便保留所有非常難看和難以維護的內容,有些將關鍵點放在片段中,並將其公開並在任何地方使用,
通過靜態工廠方法,您可以將所有內容片段並且不需要公開。誰需要使用這個片段就會清楚它的需求,也不需要知道密鑰是什麼。只需發送所需的參數就足夠了。
class FragmentFoo extends Fragment{
private static final String KEY_NAME = "name";
private String name;
public static Fragment newInstance(String name){
Bundle bundle = new Bundle();
bundle.putString(KEY_NAME, "name");
Fragment fragment = new FragmentFoo();
fragment.setArgs(bundle);
return fragment;
}
}
3
靜態工廠方法允許我們初始化和設置新的Fragment,而無需調用其構造函數和其他setter方法。爲碎片提供靜態工廠方法是一種很好的做法,因爲它封裝並提取了從客戶端設置對象所需的步驟。
http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html
0
片段必須有一個沒有參數的構造函數。這是因爲Android會調用默認的構造函數來重新創建片段。如果你沒有傳入參數,那麼你不應該需要構造函數或靜態工廠方法(AKA,虛擬構造函數)。
相關問題
- 1. 創建片段與工廠方法和Fragment.instantiate有什麼區別?
- 2. $ rootScope和工廠方法
- 3. 和Spring工廠方法
- 4. 工廠方法VS工廠對象
- 5. 靜態工廠方法vs工廠
- 6. 在工廠方法
- 7. Java工廠方法
- 8. 工廠方法implementaion
- 9. 工廠方法D.P
- 10. 抽象工廠和工廠方法可以一起使用嗎?
- 11. 沒有匹配的工廠方法發現:工廠方法 'aspectOf()'
- 12. 從子類工廠方法PHP調用超類工廠方法
- 13. 紗廠及片段
- 14. Spring 3 @Component和靜態工廠方法
- 15. 繼承和靜態工廠方法
- 16. 簡單框架和工廠方法
- 17. Flex AS3 - 繼承和工廠方法
- 18. 數據庫抽象和工廠方法
- 19. AutoMapper靜態工廠方法
- 20. 調用Javascript工廠方法
- 21. 工廠方法在Python
- 22. 靜態工廠方法(Spring)
- 23. 靜態工廠方法
- 24. Angularjs工廠方法實現
- 25. AngularJS工廠 - 從方法
- 26. 工廠方法實施
- 27. 工廠類與FromObject()方法
- 28. 調用工廠方法
- 29. 通用工廠方法
- 30. Spring註解工廠方法
我想這是有道理的。如果要使用相同的參數而不是默認值創建Fragment,但由於Fragments的工作方式(Bundles通過配置更改保留數據),因此無法使用參數化的構造函數。 – EpicPandaForce 2014-11-24 09:15:24