Android导航组件更改后退

时间:2019-04-18 07:06:41

标签: android android-fragments android-lifecycle android-architecture-navigation

我尝试使用android导航组件。 我的应用程式中有一些有趣的案例 我有一些片段: A,B,C,D,E 首先,我打开 A-> B-> C 但是然后我打开片段“ C”,我需要更改其后堆栈 它应该类似于 A-> D-> E-> C

对于onBackPressed导航,我需要删除“ B”片段并添加以前从未打开的“ D&E”片段

2 个答案:

答案 0 :(得分:0)

您可以像这样处理backpress。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
         // open another fragment which you want
    }
    return true;
}

打开C时,应该从堆栈中删除B

答案 1 :(得分:0)

android导航是一个相对较新的应用程序,我没有探索整个库来自信地说您不能缺少执行用例的能力。这样,您可以将app:popUpTo添加到对导航资源文件的操作中。这意味着您的片段将始终弹出到预定义的片段,而与后堆栈上的内容无关。这是一些代码示例:

<fragment
android:id="@+id/c"
android:name="com.example.myapplication.C"
android:label="fragment_c"
tools:layout="@layout/fragment_c">

<action
    android:id="@+id/action_c_to_a"
    app:destination="@id/a"
    app:popUpTo="@+id/a"
    app:popUpToInclusive="true"/>
</fragment>

查看文档here