我對 Android 開發比較陌生,所以也許我遺漏了一些明顯的東西。我有一個主要活動,從那里我有各種片段,我在使用導航管理器之間導航。我的問題是,如果用戶按下后退按鈕,有效地切換到堆疊中的前一個片段,UI 資料將完全丟失。我已經看到過時的解決方案,或者看起來不必要的復雜,這讓我認為它們是不正確的。例如,一種解決方案是手動存盤片段中每個視圖的每個值,并在回傳導航時恢復它們……我認為這不合適,否則 Android 作為一個框架設計得非常糟糕。
當用戶單擊后退按鈕時,是否有適當的方法來保留片段狀態,以便他們登陸的片段具有先前的狀態資訊?
順便說一句,我正在使用 Kotlin,盡管任何型別的答案都可以。
uj5u.com熱心網友回復:
片段容器視圖在官方android開發者網站上用視頻正確解釋,你可以使用它
https://developer.android.com/guide/navigation/navigation-getting-started
要傳遞資料,您可以使用此處解釋的 parcelableArg
https://developer.android.com/guide/navigation/navigation-pass-data
對于后退按鈕導航,您需要使用此處解釋的 ViewPager2
https://developer.android.com/jetpack/androidx/releases/viewpager2
片段之間的滑動在這里解釋
https://developer.android.com/develop/ui/views/animations/screen-slide-2
源代碼示例可在此處獲得
https://github.com/android/views-widgets-samples/tree/main/ViewPager2
為了保存片段的狀態,這里解釋了代碼
https://developer.android.com/guide/fragments/saving-state
如果你想存盤 Bit Data,你可以使用 Room,這里解釋
https://developer.android.com/training/data-storage/room
或使用此處解釋的 DataStore 的第二個選項
https://developer.android.com/topic/libraries/architecture/datastore
uj5u.com熱心網友回復:
我弄清楚了這個問題。為我的片段默認生成的 Android Studio 代碼在 onCreateView 中擴展了布局。我沒有意識到這一點,但是當片段在后退按鈕按下時被重新呼叫時,再次呼叫了這個充氣。防止再次呼叫 inflate 會保持 UI 狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/513340.html
標籤:安卓安卓片段
上一篇:活動與片段
