在使用导航抽屉布局时,菜单项片段未被正确添加到后退栈是常见的问题。要解决这个问题,可以在片段事务中使用addToBackStack()方法,将每个片段添加到后退栈中。
下面是示例代码,其中在片段事务中使用addToBackStack()方法:
//菜单项片段的点击事件处理 @Override public boolean onNavigationItemSelected(MenuItem item) {
// 创建新片段并传递参数
Fragment fragment = null;
Class fragmentClass = null;
switch(item.getItemId()) {
case R.id.nav_item1:
fragmentClass = Fragment1.class;
break;
case R.id.nav_item2:
fragmentClass = Fragment2.class;
break;
case R.id.nav_item3:
fragmentClass = Fragment3.class;
break;
default:
fragmentClass = Fragment1.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// 将新片段添加到片段事务中
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).addToBackStack(null).commit();
// 关闭导航抽屉布局
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
在上面的代码中,每当选择菜单项时,都会创建新的片段并将其添加到后退栈。此外,添加方法addToBackStack(null)将信息添加到后退栈中。