当前位置: 首页 > 知识库问答 >
问题:

导航架构:如何在不使用clearTask的情况下管理正确的导航,因为clearTask已被弃用

皮安顺
2023-03-14

从这里开始使用导航架构时,这里不建议使用clear任务。

我的场景是这样的:有两个屏幕登录和注册,都有彼此的链接。所以你可以从登录转到注册,也可以从注册登录。但是后面的新闻应用应该关闭。

只需将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>

但由于它被弃用,我尝试了其他解决方案,比如添加弹出窗口-

我也检查了这个问题,但没有得到解决方案。

共有2个答案

卢作人
2023-03-14

将NavHostFragment defaultNavHost值设置为false,

<fragment
    android:name="androidx.navigation.fragment.NavHostFragment"
    app:defaultNavHost="false"
    app:navGraph="@navigation/nav_graph"
    ... />

app:defaultNavHost=“true”属性确保NavHostFragment拦截系统后退按钮。请注意,只有一个NavHost可以作为默认值。如果在同一布局中有多台主机(例如,两个窗格布局),请确保只指定一台默认主机。

微生令雪
2023-03-14

你需要在行动中使用下一个代码

app:popUpTo="@+id/fragment_login"
app:popUpToInclusive="true"
 类似资料:
  • 问题内容: 当前,当浏览器宽度降至768px以下时,导航栏将变为折叠模式。我想将此宽度更改为1000px,所以当浏览器低于1000px时,导航栏将变为折叠模式。我想在不使用LESS的情况下执行此操作,而是在使用手写笔而不是LESS。 我的问题与此问题相同:Bootstrap 3Navbar折叠 但是,这些问题中的所有答案都说明了如何通过更改LESS变量来做到这一点。我没有接触过LESS,我正在使用

  • 我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片

  • null 在调用之前和之后,我尝试了,但都不起作用(这是有意义的:在它没有要弹出的内容之前;在它只关闭刚刚添加的片段之后)。这是否意味着唯一的方法是重写来拦截它,并确保在这些情况下不会被调用? 谢了!

  • 问题内容: 我有以下用于测试的类: 为了进行测试,我想通过一次SaveChanges调用插入一家公司和该公司的一名员工,如下所示: 即使我没有使用导航属性,而是通过Id建立了联系,但这种方式还是神秘地起作用了- 员工用正确的外键保存了公司的外键,该公司的外键从0更新为实际值,这使我走了出去!一些隐藏的C#功能? 然后,我决定添加更多代码,上面的代码段中对此进行了注释,使其插入了2个Company实

  • 用户可以在不登录的情况下访问我网站的某些部分。如果他们单击下载按钮并登录,下载会自动开始。但是,如果他们单击下载按钮但未登录,我想提示他们登录。一旦他们登录,我希望他们直接返回他们之前的路线。 当一个“匿名”用户单击下载按钮时,会给他们一个模式,并提示他们登录。如果他们决定登录,我会在本地存储中存储一些对象(是否认为ActivatedRouterSnapshot可以?)。登录后,我将检查本地存储中

  • 我不知道如何使用新的导航架构组件,从我的主屏幕(带有连接到底部应用程序栏的浮动操作按钮)导航到没有应用程序栏的另一个屏幕。 当我点击晶圆厂时,我想要我的下一个屏幕(片段?)从右侧滑入。问题是我应该把我的