我已经使用ActionBar
实现了导航抽屉,其中只有一个项目可以打开导航抽屉。因此Home和菜单项按钮都会打开抽屉。一切正常,没有崩溃。
但是当我点击ActionBar
主页按钮或菜单项时,导航抽屉会打开,菜单项将变为不可见。
我该怎样防止这种情况?无论抽屉是打开还是关闭,我都希望它始终可见。
我已经尝试了多种解决方案。例如,在抽屉类中,setHasOptionsMenu(true);
中调用方法onCreate
。然后我将菜单项设置为存在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);
}
但是当抽屉出现时,menu
对象返回0项。
我没有想法。
修改
@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);
}
这是RIGHT-SIDE导航抽屉。
答案 0 :(得分:1)
这是你的问题
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen())
getMenuInflater().inflate(R.menu.main, menu);
restoreActionBar();
return true;
}
return super.onCreateOptionsMenu(menu);
}
抽屉打开时没有菜单,删除if语句