0
私のアプリは2つのセクションを持つナビゲーションドロワーを使用しています。断片化したナビゲーションドロアのバックスタック
セクション1:文字リスト、お気に入りリスト
セクション2:
文字リストは、ナビゲーション引き出し内のセクション2と同じ文字選択を持っているすべての文字のリスト。セクション1の「文字リスト」または「お気に入りリスト」から、または引き出しのリストから文字を選択すると、文字ページが開きます。
私はキャラクターページにいるときに、戻るボタンを使用してユーザーをキャラクターリストまたはお気に入りリスト(いずれか最後にアクセスされたもの)に戻したいが、前のキャラクターページナビゲーションドロワー)。
私の引き出し項目リスナー:
public void getDrawerItemClickListener() {
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
public boolean onNavigationItemSelected(MenuItem menuItem) {
mDrawerLayout.closeDrawers();
int selection = menuItem.getItemId();
String name = menuItem.getTitle().toString();
if(selection == R.id.nav_home) {
Fragment myFragment = new HomeFragment();
replaceFragment(myFragment);
}
if(selection == R.id.nav_fav) {
Fragment myFragment = new FavFragment();
replaceFragment(myFragment);
}
for(int i = 0; i < characters.size(); i++) {
if(characters.get(i).getName().equals(name))
{
Fragment myFragment = new TabFragment();
myFragment.setArguments(createCharacterBundle(characters.get(i)));
replaceFragment(myFragment);
break;
}
}
return false;
}
});
}
マイreplaceFragment方法:
public void replaceFragment(Fragment myFragment) {
FragmentTransaction transaction = mFragmentManager.beginTransaction();
transaction.replace(R.id.containerView, myFragment);
transaction.commit();
}
そして、私のonBackPressed方法:
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}