【问题标题】:How to skip specific fragment from backstack in onBackPress method?如何在 onBackPress 方法中从 backstack 中跳过特定片段?
【发布时间】:2016-02-19 11:35:34
【问题描述】:
我的应用中有四个主要片段和一个次要片段。
假设片段 A、B、C、D。
Fragment A 处有一个 ListView。如果用户单击列表项,则会显示另一个 Fragment(子 A)。
所以..,如果用户点击A -> B -> C -> D。
backstack 将是 D -> C-> B-> A。这很简单。
这是我的问题..,当用户单击片段 A 处的列表项时,转换将是 A -> sub A -> B -> C -> D。但我不希望 sub A 在 backstack 上。我想要的结果是D -> C -> B -> A。我目前正在尝试跳过 sub A,但仍然找不到合适的答案。
【问题讨论】:
标签:
android
android-fragments
【解决方案1】:
通过覆盖或任何特定的后退按钮单击来使用它
FragmentManager fm = getActivity().getSupportFragmentManager();
fm.popBackStack();
像这样覆盖后退按钮
// 2.0 and above
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
// Before 2.0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}