【发布时间】:2020-02-01 17:36:12
【问题描述】:
我有片段:A、B、C、D。我导航 A -> B 。片段 B 从参数中获取并保存状态。然后我导航 B -> C。然后 C -> D。当我调用 两次 findNavController().popBackStack() 我得到正确的行为:D -> B 和 B 仍然具有正确的状态。它之所以有效,是因为片段 B 从未被破坏,只是它的视图。然后返回时重新创建视图。但不建议调用两次 popBackStack()。我们应该使用 app:popUpTo 和 app:popUpToInclusive="true" 的操作:
<action
android:id="@+id/action_fragmentD_to_fragmentB"
app:destination="@id/fragmentB"
app:popUpTo="@+id/fragmentB"
app:popUpToInclusive="true" />
但是它强制片段 B 被完全销毁然后重新创建。 Bu 没有以前的状态。
换句话说,我想在使用 FLAG_ACTIVITY_CLEAR_TOP + FLAG_ACTIVITY_SINGLE_TOP 时实现与活动相同的行为:https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
【问题讨论】:
-
为什么不建议调用两次 popBackStack()?
-
@Mr.AF 运行动画两次。
-
如果我想返回 5 次怎么办?我还应该运行 popBackStack() 5 次吗?这没有意义。
标签: android kotlin android-jetpack android-architecture-navigation android-jetpack-navigation