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(); 
     } 
    } 

答えて

0
mDrawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() { 
      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset) { 

      } 

      @Override 
      public void onDrawerOpened(View drawerView) { 
       mDrawerOpen = true; 
      } 

      @Override 
      public void onDrawerClosed(View drawerView) { 
       mDrawerOpen = false; 
      } 

      @Override 
      public void onDrawerStateChanged(int newState) { 

      } 
     }); 



public void onBackPressed() { 
    if (mDrawerOpen) { 
     mDrawerLayout.closeDrawer(DrawableItemResourceID); 
     return; 
    } else { 
     super.onBackPressed(); 
    } 
} 
関連する問題