2015-07-13 91 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. 
} 

我不但是檢查代碼,據我所知此代碼將起作用。希望這個幫助。