首页 > 解决方案 > 无法从 Android 中的导航控制器销毁片段

问题描述

我的问题是一样的:在导航控制器中杀死片段

但我使用绑定,因为它正在获取 NPE,我没有 id 可以通过

代码:点击提交按钮时,我这样做了,所以它来到了 FragmentA,但是当我按下回,再次来到 C 时,用户应该退出应用程序。

val action = CheckoutFragmentDirections.actionCheckoutFragmentToProductFragment()
        findNavController().navigate(action)

标签: androidkotlin

解决方案


在 nav_graph 里面添加这个 action 标签

app:popUpTo="@id/homeFragment"

完整代码:

fragment
        android:id="@+id/welcomeFragment"
        android:name="com.jimmytrivedi.kotlin.navcomponent.WelcomeFragment"
        android:label="{username}"
        tools:layout="@layout/fragment_welcome">
        <argument
            android:name="username"
            app:argType="string" />
        <argument
            android:name="password"
            app:argType="string" />
        <action
            android:id="@+id/action_welcomeFragment_to_homeFragment"
            app:destination="@id/homeFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right"
            app:popUpTo="@id/homeFragment"
            app:popUpToInclusive="true" />
    </fragment>

推荐阅读