【发布时间】:2021-08-09 16:32:32
【问题描述】:
所以我正在构建一个具有如下导航的应用:
登录片段(起始目的地) -> 初始设置片段 -> 主页片段。
在登录片段中,检查用户是否使用 SharedPreference 登录。如果是这样,用户将被重定向到初始设置。
在初始设置片段中,有一个检查用户是否设置了一个帐户。如果是这样,用户将被重定向到 Home Fragment。
我想问的是,例如,我正在登录应用程序,我将被重定向到初始设置片段。因为我已经设置了帐户,所以应用程序会将我重定向到 Home Fragment。那么,如何触发返回按钮以转到主屏幕而不是上一个片段(初始片段)?
到目前为止,我的理解是我需要从 backstack 中删除那些 Initial Fragment 和 Login Fragment。我尝试在我的 navigation.xml 上设置 PopUp Behavior,但仍然无法正常工作。
这是navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navigation"
app:startDestination="@id/loginFragment">
<fragment
android:id="@+id/loginFragment"
android:name="com.main.netwallet.login.LoginFragment"
android:label="fragment_login"
tools:layout="@layout/fragment_login" >
<action
android:id="@+id/action_loginFragment_to_registerFragment"
app:destination="@id/registerFragment" />
<action
android:id="@+id/action_loginFragment_to_initialSettingFragment"
app:destination="@id/initialSettingFragment" />
<action
android:id="@+id/action_loginFragment_to_homeFragment"
app:destination="@id/homeFragment" />
</fragment>
<fragment
android:id="@+id/registerFragment"
android:name="com.main.netwallet.register.RegisterFragment"
android:label="fragment_register"
tools:layout="@layout/fragment_register" >
<action
android:id="@+id/action_registerFragment_to_initialSettingFragment"
app:destination="@id/initialSettingFragment" />
</fragment>
<fragment
android:id="@+id/homeFragment"
android:name="com.main.netwallet.home.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" >
<action
android:id="@+id/action_homeFragment_to_loginFragment"
app:destination="@id/loginFragment"
app:popUpTo="@id/initialSettingFragment"
app:popUpToInclusive="false" />
</fragment>
<fragment
android:id="@+id/initialSettingFragment"
android:name="com.main.netwallet.initialSetting.InitialSettingFragment"
android:label="InitialSettingFragment"
tools:layout="@layout/fragment_initial_setting">
<action
android:id="@+id/action_initialSettingFragment_to_homeFragment"
app:destination="@id/homeFragment"
app:popUpTo="@id/loginFragment"
app:popUpToInclusive="true" />
</fragment>
</navigation>
那么我需要改变什么?
提前谢谢你
附言。我也使用了 findNavController.navigate(FragmentDirections.androidIdAction) 而不是 (R.id.fragmentId)
【问题讨论】:
标签: android kotlin android-fragments