微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Navigation PopUpToInclusive 有用吗?当应用程序重新打开时,它会打开登录片段而不是电子邮件登录片段

如何解决Navigation PopUpToInclusive 有用吗?当应用程序重新打开时,它会打开登录片段而不是电子邮件登录片段

我使用的是 android jetpack 导航,应用程序的流程是: 登录画面 → 电子邮件登录画面

nav_main.xml

<fragment android:id="@+id/loginFragment"
          android:name="com.example.myapp.ui.main.LoginFragment"
          android:label="@string/login"
          tools:layout="@layout/fragment_login" >

    <action
        android:id="@+id/action_login_to_emailLoginFragment"
        app:destination="@id/emailLoginFragment"
        app:popEnteranim="@anim/slide_in_right"
        app:popExitAnim="@anim/slide_out_right"
        app:popUpTo="@+id/loginFragment"
        app:popUpToInclusive="true"/>

</fragment>

<fragment android:id="@+id/emailLoginFragment"
          android:name="com.example.myapp.ui.main.EmailLoginFragment"
          android:label="EmailLoginFragment"
          tools:layout="@layout/fragment_login_email" />

登录片段.kt

override fun onCreateView(
    inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
): View {
    binding.emailLoginButton.setonClickListener {
        findNavController().navigate(R.id.action_login_to_emailLoginFragment)
    }

    return binding.root
}

所以,我在登录片段上打开应用程序,单击按钮,转到电子邮件登录片段,当我单击后退按钮时,我返回到设备的主屏幕。但问题是当我再次打开应用程序时,它以登录片段而不是电子邮件登录片段打开。

解决方法

听起来你对 popuptoIncusive 的定义有误。

popUpToInclusive="true" to indicate that the destination specified in app:popUpTo should also be removed from the back stack.

如果您在进入主屏幕时关闭应用程序,则导航组件的预期行为将是启动 Host 片段,在您的情况下是在片段中登录。

如果您在进入主屏幕时将应用程序发送到后台,并将应用程序带到前台,您仍将位于电子邮件片段中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。