【发布时间】:2020-10-29 02:45:42
【问题描述】:
我试图弄清楚导航组件是如何工作的。这是我的片段,SignIn Fragment 和 HomeFragment。在我的导航图中,我有以下内容
<fragment
android:id="@+id/signInFragment"
android:name="com.nitsua.chatapp.screen.authentication.SignInFragment"
android:label="SignInFragment"
tools:layout="@layout/fragment_signin">
<action
android:id="@+id/navigate_to_home"
app:destination="@id/homeFragment"
app:popUpTo="@id/signInFragment"
app:popUpToInclusive="true" />
</fragment>
<fragment
android:id="@+id/homeFragment"
android:name="com.nitsua.chatapp.screen.home.HomeFragment"
android:label="HomeFragment"
tools:layout="@layout/fragment_home"/>
如果我理解是正确的,当我使用操作:navigation_to_home 时,它将清除片段回栈,直到 signInFragment 包括它,因为 popUpToInclusive 设置为 true。如果没有设置为真。 SignInFragment 不会在 backstack 中被移除。
我尝试了 signInFragment -> homeFragment,然后是 homeFragment 和返回按钮。它工作正常。它不会登录,并且应用程序退出前台。然后我尝试从后台再次打开该应用程序。我期望应用程序位于 HomeFragment 中,但它位于 SignInFragment 中。 fragment backstack 应该存储 HomeFragment 事务,对吗?然后当它恢复时,它应该恢复 HomeFragment。但为什么它恢复了SignInFragment?我错过了什么吗?有人可以向我解释并推荐一种在 SignInFragment 上恢复到 HomeFragment 的方法吗?
谢谢。
【问题讨论】:
标签: android kotlin android-jetpack fragment-backstack android-jetpack-navigation