對所有的Fragments
使用Fragment.setRetainInstance()
以便擺脫處理Fragment
的娛樂,保存實例狀態等是一種好習慣嗎?爲什麼不?用戶Fragment.setRetainInstance不處理娛樂是否是一個好習慣?
回答
是的,如果他們必須保留配置更改,您可以將它用於不在回棧中的碎片。它只是讓事情變得更簡單。
這並不總是好的,沒有。通過保留實例,您告訴'您的舊Android可以給您一個完全相同的Fragment
實例,即從未調用片段的onDestroy
,而是在onAttach(ed)和onDetach(ed)上。
通常情況下,您需要重新流動視圖以利用不同屏幕比例作爲方向更改的結果(例如),並讓您的片段保留其狀態將意味着框架不會嘗試使用例如,如果以肖像模式啓動,您的「風景友好」視圖。
onRetainInstance
的影響是微妙的,它不是銀彈。謹慎操作。
我們如何保留維護在後端堆棧中的碎片的配置更改。因爲我們不能使用'setRetainInstance(true)' – Dory 2014-04-04 13:22:16
這是不正確的,即使你在片段上調用了'setRetainInstance(true)',它的'onCreateView()'方法也會被再次調用,並且因此它會再次被佈局 – nbarraille 2015-08-07 03:50:09
剛剛重新確認了行爲,我可以看到@nbarraille指的是什麼,以前當我在2012年編寫這個答案的時候,如果你在onCreateView下有兩個佈局,在不同的資源限定符-port或-land下,那麼通過使用setRetainInstance(true)將意味着起始佈局將在屏幕旋轉中重複使用。這似乎不再是這種情況了。請放心,以前此調用主要存在一些細微問題;請參見http://go.ie)。 /問題/ 10456077/NullPointerException異常功能於fragmentmanager / – OceanLife 2015-08-07 12:30:41
- 1. 過度依賴預處理器是否是一個壞習慣?
- 2. 爲句柄寫一個getter是否是一個好習慣?
- 3. 是否有娛樂指南?
- 4. 使用float來定位元素是否是一個好習慣?
- 5. 在$角度使用$ parent是否是一個好習慣?
- 6. Object.create({}):這是一個好習慣嗎?
- 7. PhpUnit是一個很好的習慣嗎?
- 8. 傳遞Ninject內核是否是一個好習慣?
- 9. 擴展Struts框架的FilterDispatcher是否是一個好習慣?
- 10. 重寫ServletContextListener的實現是否是一個好習慣?
- 11. 擴展NSError是否是一個好習慣
- 12. 構建集合緩存是否是一個好習慣?
- 13. 在ThreadPoolExecutor中設置allowCoreThreadTimeOut()是否是一個好習慣?
- 14. 從PHP/Mysql函數返回HTML是否是一個好習慣?
- 15. 窗口是娛樂
- 16. 在另一個線程中使用線程是否是一個好習慣?
- 17. 讓一個setter返回一個bool是否是一個好習慣?
- 18. 抑制警告是否是一種好習慣?
- 19. 什麼是處理JavaFX中很多複選框的好習慣
- 20. 這是不好的編程習慣
- 21. 這是不好的編程習慣嗎?
- 22. 這是不好的編碼習慣嗎?
- 23. 總是在C中轉換變量是否是一個好習慣?
- 24. 使用完整的數據集進行預測是否是一個好習慣?
- 25. 混合java和scala代碼,使用@BeanProperty是否是一個好習慣?
- 26. 使用ReentrantLock封裝ConcurrentHashMap讀寫操作是否是一個好習慣?
- 27. 使用JdbcTemplate.update()執行存儲過程是否是一個好習慣?
- 28. 將SharedPreferences用作磁盤緩存是否是好習慣?
- 29. 在視圖中使用getter是否是好習慣?
- 30. Perl - 將空字符串用作false是否是好習慣?
我們如何保留在堆棧中維護的片段的配置更改。因爲我們不能使用'setRetainInstance(true)' – Dory 2014-04-04 13:20:15