尽管从here开始使用导航架构,但here中的clearTask已被弃用。
我的情况是这样的:“登录”和“注册”共有2个屏幕,两者都有相互链接。因此,您可以从“登录名”转到“注册”,也可以从“注册名”登录。 但背面应关闭Press App。
只需在以下两个动作中添加clearTask即可完成
。<?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/nv_auth_phase"
app:startDestination="@id/fragment_login">
<fragment
android:id="@+id/fragment_login"
android:name="com.jobhook.ui.auth.login.LoginFragment"
android:label="LoginFragment"
tools:layout="@layout/fragment_login">
<action
android:id="@+id/nv_action_login_to_registration"
app:clearTask="true"
app:destination="@id/fragment_registration" />
</fragment>
<fragment
android:id="@+id/fragment_registration"
android:name="com.jobhook.ui.auth.registration.RegistrationFragment"
android:label="RegistrationFragment"
tools:layout="@layout/fragment_registration">
<action
android:id="@+id/nv_action_registration_to_login"
app:clearTask="true"
app:destination="@id/fragment_login" />
</fragment>
</navigation>
但是不建议使用,我尝试了其他解决方案,例如添加 popUpTo->导航图的ID ,在两个操作中将 launchSingleTop设置为true 。在我的情况下,似乎什么都不起作用。
我也检查了this question,但没有找到解决方法。
答案 0 :(得分:2)
您需要在操作中使用下一个代码
app:popUpTo="@+id/fragment_login"
app:popUpToInclusive="true"
答案 1 :(得分:0)
将NavHostFragment的默认NavHost值设置为false,
<fragment
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="false"
app:navGraph="@navigation/nav_graph"
... />
app:defaultNavHost =“ true”属性可确保NavHostFragment拦截系统的“后退”按钮。注意,只有一个NavHost可以是默认值。如果您在同一布局中有多个主机(例如,两窗格布局),请确保仅指定一个默认NavHost。
答案 2 :(得分:-1)
fun signOut(activity: Activity) = activity.finish()
附注。 Vel_daN:爱你所做的?。