在官方示例http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog中,使用靜態工廠方法創建了片段,該工廠方法將參數包裝在一個Bundle中,並調用no-args構造函數將setArguments(bundle)傳遞給args - 所以我的問題是 - 爲什麼不簡單地使用public構造函數這些論據?什麼是使用getArguments/setArguments片段的方法的原因 - 也許是不保證每次重新創建對話框,但重用?如果是這樣,那麼當它發生? 在此先感謝。DailogFragment - getArguments/setArguments - 爲什麼要在一個bundle中傳遞參數?
5
A
回答
7
實施無參數默認構造函數模式允許系統在必要時動態地重新創建片段。從文檔:
Fragment的所有子類都必須包含一個公共的空構造函數。框架通常會在需要時重新實例化一個片段類,特別是在狀態恢復期間,並且需要能夠找到這個構造器來實例化它。如果空的構造函數不可用,則在狀態恢復期間會發生運行時異常。
「會經常」和「在某些情況下」使它變得模糊。但不足以滿足你的好奇心......這是它的理由!
相關問題
- 1. 要作爲IActiveScriptProfilerControl.StartProfiling的第一個參數傳遞什麼?
- 2. 爲什麼要在javascript中傳遞一個函數作爲參數?重點是什麼?
- 3. 爲什麼我需要傳遞參數到$ uibModalInstance.close(參數)
- 4. 需要/想傳遞一個NSError **作爲參數傳遞給performSelector
- 5. 爲什麼在scala中傳遞一些函數需要_
- 6. 爲什麼傳遞參數的順序爲g ++重要
- 7. 爲什麼要通過線程函數傳遞參數?
- 8. 你爲什麼不傳遞參數?
- 9. 爲什麼使用bundle將數據傳遞給fragment?
- 10. 爲什麼startActivityForResult使用Intent傳遞數據而不是Bundle?
- 11. 在傳遞另一個方法作爲參數的方法中,爲什麼passes參數不需要傳遞它的參數?
- 12. 爲什麼在傳遞數組作爲參數時使用一個自由維?
- 13. 爲什麼「bundle exec」會使用我傳入的參數?
- 14. 爲什麼要在C++中傳遞一個智能指針作爲函數參數?
- 15. 在pthread_create:傳遞一個參數作爲最後一個參數
- 16. 什麼是傳遞多個參數
- 17. 爲什麼要創建雙變量傳遞參數?
- 18. 爲什麼在將Bundle傳遞給新Activity時會獲得NPE?
- 19. 爲什麼要將接口作爲參數傳遞給android中的函數?
- 20. 爲什麼在JavaScript中有必要傳遞一個參數,即使它不會在函數內部使用?
- 21. 在jQuery對話框中傳遞一個參數作爲參數
- 22. 爲什麼當我在str中傳遞參數,這將是一個字節
- 23. 爲什麼不能傳遞一個二維數組作爲函數參數?
- 24. 作爲參數傳遞一個函數?
- 25. 傳遞一個數組作爲參數
- 26. 爲什麼傳遞一個返回一個變量但也有一個println的參數也會傳遞println?
- 27. 爲什麼pop在程序集中需要一個參數?
- 28. 傳遞多個參數主要在C
- 29. 爲什麼我們不傳遞指針參數在中的strstr主要功能
- 30. 爲什麼要在PHP中通過引用傳遞原始類型參數?
一個空的公共構造函數可以與一個參數化的公共構造函數共存。這並不解釋使用靜態方法(而不是構造函數),也不包含參數到「Bundle」對象中。 – 2014-03-16 22:02:30
@KonradMorawski你說得對,這聽起來很合理。但是ADT lint工具會突出顯示這樣的構造函數有問題。 – 2014-09-12 00:03:34