无法从 Android 中的导航控制器销毁片段

时间:2021-03-01 17:22:44

标签: android kotlin

我的问题是一样的:Kill fragment in navigation controller

但我使用绑定,因此它正在获得 NPE,我没有要通过的 id

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

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

2 个答案:

答案 0 :(得分:0)

在操作标签内的 nav_graph 内添加此内容

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>

答案 1 :(得分:0)

这个代码块对我有用

navController.popBackStack(R.id.A, false)