gpt4 book ai didi

Android 导航组件 Activity Intent 标志

转载 作者:行者123 更新时间:2023-12-03 19:19:37 25 4
gpt4 key购买 nike

我已经创建了从 fragment 到 Activity 的导航操作,但我无法清除后台堆栈。当我执行从 fragment 到新 Activity 的导航操作并按下后退按钮时,我会回到上一个 Activity 和上一个 fragment 。我无法使用导航图设置 Intent 标志来清除后台堆栈中的先前 Activity 。

<fragment
android:id="@+id/loginFragment"
android:name="com.myapp.auth.LoginFragment"
android:label="login_fragment"
tools:layout="@layout/login_fragment" >
<action
android:id="@+id/action_loginFragment_to_webActivity"
app:destination="@id/webActivity"
app:popUpTo="@id/loginFragment"
app:popUpToInclusive="true" />
</fragment>
<activity
android:id="@+id/webActivity"
android:name="com.myapp.web.WebActivity"
android:label="activity_web"
tools:layout="@layout/activity_web" >
</activity>

弹出包容从 fragment 导航到新 Activity 时,标志对后退按钮没有影响,即使它们可以在图形编辑器中设置。我可以使用后退按钮导航到堆栈中不再需要的上一个 Activity 。

在迁移到导航图之前,我可以使用 Intent 标志指定此行为:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

如何使用导航图实现相同的目标?

最佳答案

引用 Fatih's answer

val extras = ActivityNavigator.Extras.Builder()
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.build()
findNavController().navigate(BlaBlaActivityDirections.actionFooBarToBlaBlaActivity(), extras)
注意您需要将这些标志添加到 Activity 堆栈:
  • FLAG_ACTIVITY_CLEAR_TASK :将 Activity 设置为根任务。与
  • 一起使用
  • FLAG_ACTIVITY_NEW_TASK :将 Activity 视为启动器 Activity 。
  • FLAG_ACTIVITY_REORDER_TO_FRONT : 把 Activity 带到前面。仅当堆栈上有其他 Activity 并且不想清除它时才使用此选项。
  • 关于Android 导航组件 Activity Intent 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59633518/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com