Navigation popUpTo and PopUpToInclusive aren#39;t clearing the backstack(导航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不会清除后台堆栈


- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01