gpt4 book ai didi

android - 从D向后导航时,防止破坏(或恢复状态) fragment B-导航组件

转载 作者:行者123 更新时间:2023-12-02 13:44:30 25 4
gpt4 key购买 nike

我有片段:A,B,C,D。我浏览A-> B。片段B从参数获取并保存状态。然后我导航B->C。然后导航C->D。当我两次调用两次 findNavController().popBackStack()时,我得到了正确的行为:D-> B和B仍然具有正确的状态。之所以起作用,是因为片段B从未被破坏,仅是它的 View 。然后在返回时重新创建 View 。但是不建议两次调用popBackStack()。相反,我们应该将该操作与app:popUpToapp:popUpToInclusive="true"结合使用:

<action
android:id="@+id/action_fragmentD_to_fragmentB"
app:destination="@id/fragmentB"
app:popUpTo="@+id/fragmentB"
app:popUpToInclusive="true" />

但是它迫使片段B被完全破坏,然后重新创建。用 填充以前没有状态

换句话说,当我使用 FLAG_ACTIVITY_CLEAR_TOP + FLAG_ACTIVITY_SINGLE_TOP时,我想要实现与“ Activity ”相同的行为: https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

最佳答案

如果您不想导航到app:destination="@id/fragmentB"的新实例,则无需在操作上添加fragmentB(因为app:destination就是这样做的)。因此,您可以使用:

<action
android:id="@+id/action_fragmentD_to_fragmentB"
app:popUpTo="@+id/fragmentB" />

这与调用 popBackStack(R.id.fragmentB, false)相同-即,弹出回 fragmentB,但不弹出 fragmentB本身。

关于android - 从D向后导航时,防止破坏(或恢复状态) fragment B-导航组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60019438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com