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