我的应用程序包含带有少量菜单项的NavigationView的AppBaseActivity。默认情况下,我加载Home片段&点击抽屉中的每个菜单项,我打开特定的片段。
我的问题是,如果用户点击后退按钮,我需要一直显示Home片段。
逐步解释:
在我目前的情况下,它只是关闭/终止我的应用程序。
AppBaseActivity Java(代码的某些部分)
onCreate() {
fragmentTransaction = fragmentManager.beginTransaction();
HomeFragment homeFragment = new HomeFragment();
fragmentTransaction.add(R.id.body_container, homeFragment, getResources().getString(R.string.app_name));
fragmentTransaction.commit();
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
navigationView.getMenu().findItem(item.getItemId()).setChecked(true);
switch (item.getItemId()) {
case R.id.nav_terms :
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentTransaction = fragmentManager.beginTransaction();
TCFragment tcFragment = new TCFragment();
fragmentTransaction.add(R.id.body_container, tcFragment, getResources().getString(R.string.tc_screen_name));
fragmentTransaction.commit();
break;
case R.id.nav_about_us :
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentTransaction = fragmentManager.beginTransaction();
AboutUsFragment aboutUsFragment = new AboutUsFragment();
fragmentTransaction.add(R.id.body_container, aboutUsFragment, getResources().getString(R.string.about_us_screen_name));
fragmentTransaction.commit();
break;
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
答案 0 :(得分:0)
尝试在提交前添加带有home片段的这一行:
fragmentTransaction addTobackStack(null);
答案 1 :(得分:0)
您需要使用addToBackStack()将事务添加到Backstack。背压将自动弹出背斜堆中的最顶层碎片。
参考 https://developer.android.com/guide/components/fragments.html
相关部分为“执行碎片交易”