【发布时间】:2015-12-04 10:10:18
【问题描述】:
我正在构建一个使用抽屉导航的 android 应用程序,它看起来和运行良好,除了我无法将当前视图(片段)添加到后台堆栈以允许用户更轻松地导航应用程序。目前,后退按钮在按下时会退出应用程序。我在这里查看了各种问题,但没有一个有效。
这是我目前的尝试,不明白为什么它不起作用。
if (id == R.id.nav_gallery) {
// fragmentManager.beginTransaction().replace(R.id.content_frame, new GalleryFragment()).commit();
// fragmentManager.beginTransaction().addToBackStack(null);
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, new GalleryFragment());
ft.addToBackStack(null);
ft.commit();
}
编辑
onbackPressed
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
FragmentManager fragmentManager = getFragmentManager();
int backCount = fragmentManager.getBackStackEntryCount();
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
【问题讨论】:
-
我当然希望
GalleryFragment()不会使用setRetainInstance(true)保留。 -
@Lakhan 在事务中添加到后台堆栈时,不需要覆盖
onBackPressed -
代码来自您的活动,对吧?不是片段?
-
@Tapirboy 在加载片段的主要活动中是正确的。我已经接受了下面的答案。我确实热处理了在 onBackPressed() 中按下的背面 btn。它现在正在工作
标签: android android-fragments back-stack fragment-backstack