Navigation popUpTo and PopUpToInclusive aren#39;t clearing the backstack(导航popUpTo和PopUpToInclusive不会清除后台堆栈)
本文介绍了导航popUpTo和PopUpToInclusive不会清除后台堆栈的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是Android Jetpack导航体系结构的新手。我正在一款新的应用程序上试用。有一个活动和几个片段,其中两个是登录屏幕和电子邮件登录屏幕。我在我的导航XML中定义了这些片段。APP流程如下:
Login screen
→Email Login screen
我想要的是,在导航到电子邮件登录屏幕后,当我按BACK时,应用程序退出。这意味着删除了登录屏幕的后端堆栈。我知道登录屏幕不应该那样工作,但我还在想办法。
我遵循了Google的Get started with the Navigation component中的文档。它说,使用app:popUpTo
和app:popUpToInclusive="true"
应该清除后台堆栈,但是当我在邮件登录屏幕上按BACK时,它仍然返回登录而不是退出。
所以,以下是我尝试过的内容。
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/emailLoginFragment"
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" />
LoginFragment.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
}
我给了一个按钮一个单击事件。在它中,我使用导航控制器导航到电子邮件登录屏幕,为其提供操作ID。在<action>
中,有app:popUpTo
和app:popUpToInclusive="true"
。
推荐答案
<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"/>
您的popUpTo将返回到电子邮件登录,然后因为包含它而弹出。
如果您要将popUpTo更改为您的登录片段,它将被导航回并因包含标志而弹出,这将导致您所需的行为。
这篇关于导航popUpTo和PopUpToInclusive不会清除后台堆栈的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:导航popUpTo和PopUpToInclusive不会清除后台堆栈
基础教程推荐
猜你喜欢
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01