不要使用Android Navigation组件将片段包含在返回堆栈中

5

我正在开发一个用户可以创建事件的应用程序。我希望在他们创建事件后,返回按钮不会将其带回到创建流程,而是回到创建流程之前的屏幕,就像这样:

主屏幕 -> 创建流程 -> 事件摘要

然后,如果他们按下返回按钮,我希望它回到:

事件摘要(返回按钮)主屏幕

我已经接近成功:

<fragment
    android:id="@+id/createMeetFragment"
    android:name=".CreateMeetFragment"
    android:label="CreateMeetFragment" >
    <action
        android:id="@+id/action_createMeetFragment_to_meet_detail_graph"
        app:destination="@id/meet_detail_graph"
        app:popUpTo="@+id/mainFragment" />
</fragment>

这种方法可以很好地弹出到主屏幕。我没有找到关于这些弹出行为选项的详细文档,只有这个

我的问题是,据我所知,这种解决方案会一直弹出直到我们到达MainScreen,而不管用户如何进入事件创建流程。我更喜欢一个解决方案,只需弹出到创建流程之前的屏幕,允许多个入口点进入创建流程。
1个回答

8

我更希望有一个解决方案,在创建流程之前,只是弹出到屏幕上,以允许多个入口进入创建流程。

你不应该弹出到主屏幕,而是应该弹出到包括创建流程第一屏的界面

<fragment
    android:id="@+id/createMeetFragment"
    android:name=".CreateMeetFragment"
    android:label="CreateMeetFragment" >
    <action
        android:id="@+id/action_createMeetFragment_to_meet_detail_graph"
        app:destination="@id/meet_detail_graph"
        app:popUpTo="@+id/firstCreateFlowFragment" 
        app:popUpToInclusive="true" />
</fragment>

我很感激您的想法,我认为这可能是有道理的,但我主要想了解的是,在存在多个选项时,是否可以弹出将我带到第一个创建屏幕的屏幕。 - Ryan C
如果我理解你的问题正确,如果你弹出到第一个创建屏幕(即该屏幕也被销毁),那么你就会回到带你到那里的屏幕。是这样吗? - jaychang0917
您是100%正确的,我误读了您的建议,理解有误,原本以为您建议我导航到第一个屏幕。我现在明白了,已经测试并且有效。接受! - Ryan C
我尝试了这个解决方案,它对我有用,但我必须删除 app:popUpToInclusive="true"。 - Saurabh Khare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接