我的活动包括导航抽屉,当前在左侧菜单中有5个选项。全部以片段开头。
我正在寻找一种方法来保留所有片段的堆栈,因此当用户按下“后退”按钮时,他将移至上一个片段。
类似活动由抽屉菜单组成,抽屉菜单具有5个选项menu1,menu2,menu3,menu4,menu5,其对应的片段为F1,F2,F3,F4,F5。
用户按下menu1,将其转发到F1
然后按menu2,然后按menu4。
当用户位于F4并向后按时,应将其移至F2,而不是退出活动或应用程序。
如何实现和首选示例或示例代码。
我目前正在使用此代码,但对我没有帮助
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment)
.addToBackStack(null)
.commit();
最佳答案
我为您的查询找到了一些解决方法:
在代码中覆盖onBackPressed()
使用与后台维护相关的方法,其中包含您的所有片段事务
public void onBackPressed(){
FragmentManager fm = getFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
Log.i("MainActivity", "popping backstack");
fm.popBackStack(); // this will display last visible fragment
getActinBar().setTitle(mTitle); // save your title in some variable and restore here
} else {
Log.i("MainActivity", "nothing on backstack, calling super");
super.onBackPressed(); // system will handle back key itself
}
}
参考答案:this