应用场景:
在主Activity中,采用InstrumentedActivity侧边栏的方式,侧边栏的每一项对应一个Fragment,要实现不同的Fragment动态显示与隐藏ActionBar Menu。
处理思路:
在onCreateOptionsMenu()方法中,根据标识flag动态设置MenuItem的显示与隐藏,在切换Fragment 的地方调用:invalidateOptionsMenu()方法重新加载Menu。
@Override public boolean onPrepareOptionsMenu(Menu menu) { return super.onPrepareOptionsMenu(menu); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.czsm_content, menu); MenuItem mi = menu.findItem(R.id.action_czsm); if(isShowInfoFlag){ mi.setVisible(true); }else{ mi.setVisible(false); } return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(isShowInfoFlag && !isCheckedCur){ switch(item.getItemId()){ case R.id.action_czsm: Fragment fragment = null; ft = fm.beginTransaction(); fragment = new CzsmFragment(); isCheckedCur = true;//表示当前点击过了 ft.replace(R.id.content_frame, fragment); ft.commit(); break; } } if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); }