2014-09-26 71 views
1

我已經實現了帶有ActionBar的導航抽屜,其中只有一個項目可以打開導航抽屜。因此,主頁和菜單項按鈕打開抽屜。所有的工作都很好,沒有崩潰。如何防止在導航抽屜打開時隱藏ActionBar項目?

但是,當我點擊ActionBar主頁按鈕或菜單項時,導航抽屜會打開,並且菜單項變得不可見

我該如何預防?無論抽屜是打開還是關閉,我都希望它始終可見。

我已經嘗試了多種解決方案。例如,在抽屜類中,在onCreate中調用方法setHasOptionsMenu(true);。然後我設置菜單項目always

然後在主Activity,我試圖在創作中捕捉菜單項

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    try { 
     MenuItem item = menu.getItem(0); 
     if (item != null) { 
      item.setVisible(true); 
     } 
    } catch (Exception e) { 
     Log.e(TAG, "Error: " + e.getLocalizedMessage()); 
    } 
    return super.onPrepareOptionsMenu(menu); 
} 

但是當抽屜出現,0項menu對象的回報。

我沒有想法。

編輯

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (!mNavigationDrawerFragment.isDrawerOpen()) 
     getMenuInflater().inflate(R.menu.main, menu); 
     restoreActionBar(); 
     return true; 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

public void restoreActionBar() { 
    ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.setDisplayShowHomeEnabled(true); 
    actionBar.setDisplayHomeAsUpEnabled(false); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (item != null && id == android.R.id.home) { 
     if (mNavigationDrawerFragment.isDrawerOpen(Gravity.RIGHT)) { 
      mNavigationDrawerFragment.closeDrawer(Gravity.RIGHT); 
     } else { 
      mNavigationDrawerFragment.openDrawer(Gravity.RIGHT); 
     } 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

這是右側抽屜式導航欄。

+0

那麼你的'onCreateOptionsMenu'樣子 – tyczj 2014-09-26 16:44:14

+0

現在@tyczj檢查它。我編輯了這個問題。 – sandalone 2014-09-26 16:47:34

+0

好吧,你走了,你抽屜打開時做一些特別的事情。或不開放我可以說 – tyczj 2014-09-26 16:48:16

回答

1

這是你的問題

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (!mNavigationDrawerFragment.isDrawerOpen()) 
     getMenuInflater().inflate(R.menu.main, menu); 
     restoreActionBar(); 
     return true; 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

你不抽屜打開時有一個菜單,刪除if語句