首页 > 代码库 > 动态修改ActionBar Menu的显示

动态修改ActionBar Menu的显示

应用场景:

在主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);    }

 

动态修改ActionBar Menu的显示