我有一個片段,可以從我的應用程式的任何地方動態導航到它,但是,當用戶離開這個片段時,它不應該被添加到后臺堆疊中。
例如,如果用戶在片段 A 并導航到該片段 (B) 然后導航到片段 C,當他們點擊回傳時,他們應該到達片段 A 而不是片段 B。
我嘗試在片段 B 中呼叫以下內容:
findNavController().navigate(
resId = R.id.C,
navOptions = NavOptions.Builder()
.setPopUpTo(R.id.B, inclusive = true)
.build()
)
但是,這不起作用。此外,我不能從片段 B 呼叫它:
findNavController().navigate(
resId = R.id.C,
navOptions = NavOptions.Builder()
.setPopUpTo(R.id.A, inclusive = false) // this line is different
.build()
)
因為 B 不知道它的前身是什么。
或者,我不能在 C 中的回傳導航中呼叫這樣的東西:
findNavController().popBackStack(R.id.A, inclusive = false)
或類似在 C 中創建片段的內容:
findNavController().popBackStack()
因為 C 不一定知道它的前任是什么時候。
為了讓這更難,我無法在片段 B 中呼叫 navigateBack() 和 navigate() ,因為我的應用程式內部原因。
我相信如果我要檢查回傳堆疊并添加一些動態呼叫,這可能是可能的,但是,這感覺像是一個hacky解決方案。
有沒有什么巧妙的方法可以做到這一點?
uj5u.com熱心網友回復:
我嘗試在片段 B 中呼叫以下內容:
findNavController().navigate( resId = R.id.C, navOptions = NavOptions.Builder() .setPopUpTo(R.id.B, inclusive = true) .build() )
這個解決方案通常應該有效,我的應用程式中存在一個內部錯誤,阻止了 navOptions 到達 navigate() 呼叫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/364619.html
標籤:安卓 android-fragments 安卓导航 android-jetpack-导航
