我使用 ViewPager2 管理了 4 個片段。
我只想在第一次打開它時初始化每個片段,這意味著當我打開應用程式時,只有第一個片段被初始化,而第二個片段只有在我導航到它時才會被初始化。
當我不進行任何特殊配置時,這似乎是 viewpager2 的默認行為。
但是我想要做的不是在導航到第二個片段時丟失第一個片段的實體。
我嘗試使用 viewpager.isUserInputEnabled = 4(或 1)。這個函式保持片段初始化并且不會丟失它們的實體。但它一次初始化所有片段,我只想在它們可見時初始化它們。
這是我的配接器
class HomeAdapter(fragmentActivity : FragmentActivity) : FragmentStateAdapter(fragmentActivity)
{
override fun getItemCount() : Int = 4
override fun createFragment(position : Int) : Fragment
{
return when(position)
{
0 -> SearchMissionContainerFragment.instance()
1 -> MissionHistoryFragment.instance()
2 -> PaymentContainerView.instance()
else -> SettingsFragment.instance()
}
}
}
這是初始化部分
binding.viewpager.offscreenPageLimit = 1
binding.viewpager.isUserInputEnabled = false
binding.viewpager.adapter = HomeAdapter(this)
請問有什么解決辦法嗎?
uj5u.com熱心網友回復:
我找不到解決方案,但無論如何你的這種行為有什么問題?如果您需要在片段可見時進行回呼,您可以使用 onResume 回呼。如果你想讓 onResume 代碼不呼叫兩次,你可以在 onResume 結束時將一個變數(布林值)設定為 true,并在 onResume 的第一行檢查它的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/424650.html
上一篇:為什么不呼叫嵌套片段(ViewModel)中的流集合?
下一篇:再次呼叫片段使其不可見
