簡體   English   中英

發生配置更改時,如何不重置片段?

[英]How do I not reset my fragments when configuration changes happen?

所以我有這個活動為我創建了 4 個片段,它們是一個底部導航欄。 當我切換到暗模式或亮模式時,片段會重置並帶我回到“主片段”,它基本上位於底部導航欄中。 所以我的問題是如何在更改 UI 模式時留在我所在的選項卡中? 同時當然也改變了片段的 UI 模式

最好的方法是讓 Activity 用它的片段重新創建自己,可能需要一些配置更改才能顯示正確的 UI。 你的用戶總是有可能將你的應用程序移到后台,系統會在一段時間后殺死它,然后當你的用戶回到它時 - 你會回到你的娛樂問題。 我在談論它是為了防止您在 androidmanifest 中使用像 configChanges 這樣的 hacks 來防止配置更改事件上的 Activity 重新創建。

但是回到重點:當配置更改破壞了您的 Activity 時,將在創建新的 Activity 實例時自動重新創建片段。 但是由你來保存它的一些狀態。 我不確定您的 UI 和代碼是什么樣的。 保存和恢復狀態的基本方法(如問題中的活動選項卡)是使用:Activity.onSaveInstanceState(Bundle) / Activity.onCreate(savedInstanceState: Bundle?) 和 Fragment.onSaveInstanceState(Bundle)/Fragment.onCreate(savedInstanceState) :捆綁?)機制。 您將相關變量保存在 onSaveInstanceState 中的包中,稍后在 onCreate 中使用 savedInstanceState 變量恢復此狀態,但前提是它的非空值 - 第一次創建 Activity 時會發生這種情況。

這是一個廣泛的主題,您可以在此處找到更多相關信息:

https://developer.android.com/topic/libraries/architecture/saving-states https://developer.android.com/guide/fragments/saving-state

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM