动态修改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);
    }

 

posted @ 2014-11-04 16:16  yshy  阅读(727)  评论(0编辑  收藏  举报