我尝试使用android导航组件。 我的应用程式中有一些有趣的案例 我有一些片段: A,B,C,D,E 首先,我打开 A-> B-> C 但是然后我打开片段“ C”,我需要更改其后堆栈 它应该类似于 A-> D-> E-> C
对于onBackPressed导航,我需要删除“ B”片段并添加以前从未打开的“ D&E”片段
答案 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