私はAndroidの初心者です。私はアクティビティを通して複数のフラグメントを使用したアプリケーションを開発しています。複数のフラグメントでonBackPressed()を処理する方法
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かどうかを確認する条件を確認します。はいの場合は、アクティビティを終了します。 – SripadRaj