通知onbackpressed()从哪个片段调用

时间:2015-01-03 01:31:26

标签: android android-fragments

我有一个Activity,我添加了一个ListFragment。当我单击一个按钮时,新的Fragment将替换ListFragment。我使用addTobackStack(null)所以当我按下后退按钮时,我将结束ListFragment。如果用户没有按下后面而是点击按钮,那么他会转到另一个新的片段。从那里我希望用户返回ListFragment,所以当我进行fragmentTransaction时我不使用addTobackStack()。

架构是:

ListFragment -------> GameFragment --------> EndFragment

来自GameFragment我可以返回ListFragmentEndFragment我必须转到ListFragment而不是GameFragment

所以我猜我在某种程度上覆盖了我的Activity中的onBackPressed(),所以当我在EndFragment上与ListFragment进行交易时

问题是当我覆盖EndFragment

时,我不知道如何引用onBackPressed()

(除非有更好的方法来执行此操作......)

我现在使用的onBackPressed()代码:

    @Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
        Log.i("FINISH", "Finish");
        finish();
    } else {
        Log.i("FINISH", "POP STACK");
        getSupportFragmentManager().popBackStack();
    }
}

1 个答案:

答案 0 :(得分:0)

更好的方法是从BackStack中删除AF活动,这是所有以前的活动以及后退按钮查找以前活动的位置。

为此,在您的AF活动中,将FLAG_ACTIVITY_CLEAR_TOP标记添加到您的意图中,如下所示:

Intent intent = new Intent(this, BF.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

另一个选项是覆盖按后退按钮时发生的情况。覆盖onBackPressed()方法:

@Override
public void onBackPressed() {
   super.onBackPressed();
   Intent intent = new Intent(this, BF.class);
   goToMainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
   startActivity(goToMainActivity);
 }