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