我的应用程序中有以下工作流程:
活动1(ListView) - >活动2(加载片段的ListView) - >片段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因其他原因被破坏了?
任何帮助都将不胜感激。
谢谢!
答案 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...
}