android: changing option menu items programmatically

前端 未结 12 1880
终归单人心
终归单人心 2020-12-02 09:33

Is it possible to change the option menu items programmatically? Can anyone provide me with an example please?

Also, I want to disable certain items, so that they do

12条回答
  •  北海茫月
    2020-12-02 10:05

    Try this code:

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        this.menu=menu;
        updateMenuItems(menu);
        return super.onPrepareOptionsMenu(menu);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.document_list_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }
    
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        if (item.getItemId() == android.R.id.home) {
            onHomeButtonPresssed();
        }else if (item.getItemId() == R.id.action_delete) {
            useCheckBoxAdapter=false;
            deleteDocuments();
        } else if (item.getItemId() == R.id.share) {
            useCheckBoxAdapter=false;
            shareDocuments();
        } else if (item.getItemId() == R.id.action_tick) {
            useCheckBoxAdapter=true;
            onShowCheckboxes();
        }
        updateMenuItems(menu);
        return true;
    }
    
    private void updateMenuItems(Menu menu){
        if (useCheckBoxAdapter && menu != null) {
            menu.findItem(R.id.action_delete).setVisible(true);
            menu.findItem(R.id.share).setVisible(true);
            menu.findItem(R.id.action_tick).setVisible(false);
        } else {
            menu.findItem(R.id.action_delete).setVisible(false);
            menu.findItem(R.id.share).setVisible(false);
            menu.findItem(R.id.action_tick).setVisible(true);
        }
        invalidateOptionsMenu();
    }
    

提交回复
热议问题