【发布时间】:2017-05-18 12:47:58
【问题描述】:
我有 Base Activity 包括 NavigationView 和 2 menu items。开始时它会加载Home fragment,其中包含background image。每个加载特定的fragment。当我选择条款和条件菜单项时,它会加载 T&C fragment 并且当我按下后退按钮时,它只会杀死它。
但是,当我选择 About Us 菜单项时,它会加载 About Us fragment 但我需要按两次 BACK button 才能杀死它。我需要知道为什么会这样?
AppBaseActivity中的部分代码
@Override
protected void onCreate(Bundle savedInstanceState) {
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
HomeFragment homeFragment = new HomeFragment();
fragmentTransaction.add(R.id.body_container, homeFragment, "");
fragmentTransaction.commit();
}
@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 :
fragmentTransaction = fragmentManager.beginTransaction();
TCFragment tcFragment = new TCFragment();
fragmentTransaction.replace(R.id.body_container, tcFragment, "");
fragmentTransaction.commit();
break;
case R.id.nav_about_us :
fragmentTransaction = fragmentManager.beginTransaction();
AboutUsFragment aboutUsFragment = new AboutUsFragment();
fragmentTransaction.replace(R.id.body_container, aboutUsFragment, "");
fragmentTransaction.commit();
break;
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
All fragments 只是通过膨胀尊重的 xml 来覆盖 onCreateView()。 fragments 还没有编写代码。
【问题讨论】:
-
使用 .add 而不是 .replace 来加载片段并查看
-
你覆盖了
onBackPressed() -
但是为什么它在 T&C 片段的情况下有效呢?
-
@kishorejethava 不,我没有。
-
可能是因为你添加了 Home 片段。尝试在那里替换。
标签: android android-fragments android-activity android-navigationview appcompatactivity