【问题标题】:pop up to graph startDestination fragment for a global action - Android navigation components弹出到全局操作的图形 startDestination 片段 - Android 导航组件
【发布时间】:2020-04-26 02:50:17
【问题描述】:

我有一个多图导航应用程序,我想使用在我的根 main_graph.xml 中定义的 global action 在图之间切换

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_graph"
        app:startDestination="@id/loadingFragment">

    <include app:graph="@navigation/learn_graph" />

    <action
            android:id="@+id/action_global_learn_graph"
            app:destination="@id/learn_graph"
            app:launchSingleTop="true"
            />
</navigation>

由于我试图在图表之间切换,所以在将全局操作导航到目标图表 (explore_graph) 时,我想从源图表 (main_graph) 加载的片段中清除后台堆栈。预期的行为是导航到目标图的startDestination 片段,仅在后台堆栈中保留该片段。 对于正常操作(同一图中的操作),我可以使用 popUpTo 标志,如何获得全局操作的相同行为?

【问题讨论】:

  • 我也面临同样的问题。弄清楚后告诉我。
  • @InsaneDeveloper 可能我找到了解决方案,请检查下面的答案;)

标签: android navigation androidx android-jetpack android-architecture-navigation


【解决方案1】:

经过多次尝试,我找到了解决方案。基本思想是将后台堆栈弹出到“拥有”全局操作的图形。在我的情况下,main_graph 是所有者,所以我这样做了:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_graph"
        app:startDestination="@id/loadingFragment">

    <include app:graph="@navigation/learn_graph" />

    <action
            android:id="@+id/action_global_learn_graph"
            app:destination="@id/learn_graph"
            app:popUpTo="@+id/main_graph"
            app:launchSingleTop="true" />

</navigation>

此外,您必须将 app:launchSingleTop 标志设置为 true 以使 目标图 的实例在您的后台堆栈中唯一

您还可以包含app:popUpToInclusive="true" 以指示app:popUpTo 中指定的目标也应该从后台堆栈中删除

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    相关资源
    最近更新 更多