2015-07-13 67 views
1

我有一个活动和五个片段。我有一个导航抽屉按钮在选项菜单,它可以帮助我浏览片段。但在一个片段,我想改变它回到button.Currently后退按钮工作正常。但与此同时,活动选项菜单也起作用,并且会带来导航抽屉。如何停止该操作?oncreate选项菜单的片段stoppng活动oncreateoptionmenu

这里是我的抽屉

MainActivity

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.container, new SettingsFragment()); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 
      break;  
     case android.R.id.home: 
      mDrawerLayout.openDrawer(GravityCompat.START); 
      break; 
     default: 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

片段

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      getFragmentManager().popBackStack(); 
      return true; 
     default: 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

其实当我选择这两个选项菜单选项菜单家庭代码的工作,我想唯一的片段选项菜单中工作。我该如何阻止它?请帮助

回答

1

首先,在您的活动中,创建一个标志来检查主页按钮是否为后退按钮:isBackShow = false。然后,在onOptionsItemSelected

case android.R.id.home: // show drawer or pop backstack base on flag 
     if(isBackShow) 
     getFragmentManager().popBackStack(); 
     mDrawerLayout.openDrawer(GravityCompat.START); 
     return true; 

在你SettingsFragment,你可以改变父亲Activity如下的标志onCreateView或在某处你想:

if(getActivity() instanceof YourFatherActivity){ 
     ((YourFatherActivity)getActivity()).isBackShow = true; 
     // You can also change drawer icon to back icon here. 
} 

我不但是检查代码,据我所知此代码将起作用。希望这个帮助。