将当前片段添加到backstack:Android

时间:2014-06-28 19:10:37

标签: java android android-fragments back-stack

我在活动中添加片段,片段A. 现在从这个片段,我去了各种其他片段,每当我去那些片段时,我都会替换片段A.

但只有一种情况,当我想要从片段A到片段Z时,我将片段A添加到后栈。 因此,基本上对于片段A的所有点击,将用户带到其他片段(通过替换片段A),只有单击我想要将片段A放在后面的堆栈中,这就像当我从后面按回来时这个新的片段Z,我不希望活动完成,而是我想要片段A才能恢复。

现在,执行此操作的一种方法是执行以下操作:

@Override
public void onBackPressed() {

    if ( getFragmentManager().findFragmentByTag(FragmentZ.class.toString()) == null){
        super.onBackPressed();
    }
    else {
        //i would add fragment A over here.
    }
}

但是我想如果我能在片段Z之前将片段A添加到后面的堆栈中,那么我就不必处理上述内容了。

有些人可以帮我解决上述问题吗?

1 个答案:

答案 0 :(得分:2)

将片段A添加到后台堆栈的唯一方法是在提交将片段A替换为片段Z的事务之前。

在添加片段Z之后,您无法在以后添加它。

在插入片段Z的事务上调用commit()之前,请在事务上调用addToBackStack(null)

然后您不必覆盖onBackPressed()