【发布时间】:2017-07-10 09:40:30
【问题描述】:
我是 Android 初学者,我正在开发一个应用程序,其中我通过一个活动使用了多个片段。
private void displaySelectedScreen(int itemId) {
Fragment fragment = null;
switch (itemId) {
case R.id.nav_home:
fragment = new HomeFragment();
break;
case R.id.nav_attendance:
fragment = new AttendanceFragment();
break;
case R.id.nav_notification:
fragment = new NotificationFragment();
break;
case R.id.nav_event:
fragment = new EventFragment();
break;
case R.id.nav_fee:
fragment = new FeesFragment();
break;
case R.id.nav_news:
fragment = new NewsFragment();
break;
}
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frame_container, fragment);
ft.addToBackStack(null);
ft.commit();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
}
如果抽屉已经关闭,则使用onBackPressed() 方法关闭应用程序。现在,如果当前片段是HomeFragment 并且如果当前片段不是HomeFragment,那么我想关闭一个应用程序,然后替换为HomeFragment。不知道,效果如何?
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
closeApp();
}
}
【问题讨论】:
-
在按下返回按钮时检查碎片的数量。从堆栈中弹出片段,直到到达第 0 个片段。检查一个条件,判断栈的大小是否为0。如果是,则结束activity。
标签: android android-fragments drawerlayout android-drawer