【发布时间】:2015-01-03 01:31:26
【问题描述】:
我有一个 Activity,我添加了一个 ListFragment。当我单击一个按钮时,一个新的 Fragment 将替换 ListFragment。我使用 addTobackStack(null),所以当我按下后退按钮时,我将结束 ListFragment。如果用户没有按下后退,而是点击了一个按钮,那么他会转到另一个新的 Fragment。从那里我希望用户回到 ListFragment,所以我在进行 fragmentTransaction 时不使用 addTobackStack()。
架构是:
ListFragment -------> GameFragment --------> EndFragment
从GameFragment 我可以回到ListFragment,从EndFragment 我必须回到ListFragment 而不是GameFragment。
所以我猜我必须以某种方式覆盖我的 Activity 中的 onBackPressed() 所以当我在 EndFragment 上与 ListFragment 进行交易时
问题是当我覆盖 onBackPressed() 时,我不知道如何引用 EndFragment
(除非有更好的方法来执行此操作...)
我现在使用的 onBackPressed() 代码:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
Log.i("FINISH", "Finish");
finish();
} else {
Log.i("FINISH", "POP STACK");
getSupportFragmentManager().popBackStack();
}
}
【问题讨论】: