使用ActionBarActivity&时断开BackStack getSupportFragmentManager

时间:2015-03-11 19:50:17

标签: android android-fragments android-actionbar fragment-backstack

我的应用程序中有以下工作流程:

活动1(ListView) - >活动2(加载片段的Lis​​tView) - >片段1 - >片段2。

这一切都很精彩,我可以前往Fragment 2,然后按Back按钮向后移动每一步。

在某些时候我需要添加一个ActionBar。由于代表谷歌的一些奇怪的编程,我必须扩展ActionBarActivity导入android.support.v7.app.ActionBarActivity,这需要我将所有我的片段管理器更改为“支持”导入android.support.v4.app。 FragmentManager。

结果是,我的工作流程中有一个ActionBar,但我只能前往Fragment 2.按下Back按钮,导致Activity 1出现,没有BackStack。

那么,是否有ActionBar和BackStack的Actions / Fragments不可能,或者我的BackStack因其他原因被破坏了?

任何帮助都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您正在使用诸如add(),replace()等FragmentTransaction调用,则在调用commit()之前在FragmentTransaction上调用addToBackStack()。这将进行设置,以便后退按钮可以像您期望的那样使用片段。

答案 1 :(得分:0)

我解决了这个问题。显然,ActionBarActivity不会调用通常的onBackPressed(),也不会与其他各种黑客一起使用。

我发现,后退按钮仅由onOptionsItemSelected()捕获,如:

public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if(id == android.R.id.home) {
        // use popBackStack() and super.onBackPressed()
        return true;
    }
    // check for other button presses...
}