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