How to change MenuItem icon in ActionBar programmatically

后端 未结 9 1659
小鲜肉
小鲜肉 2020-11-30 23:37

How to change MenuItem icon in ActionBar programmatically? I tried to use

MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings);
menuItem.setIcon(         


        
9条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-30 23:50

    Here is how i resolved this:

    1 - create a Field Variable like: private Menu mMenuItem;

    2 - override the method invalidateOptionsMenu():

    @Override
    public void invalidateOptionsMenu() {
        super.invalidateOptionsMenu();
    }
    

    3 - call the method invalidateOptionsMenu() in your onCreate()

    4 - add mMenuItem = menu in your onCreateOptionsMenu(Menu menu) like this:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.webview_menu, menu);
        mMenuItem = menu;
        return super.onCreateOptionsMenu(menu);
    }
    

    5 - in the method onOptionsItemSelected(MenuItem item) change the icon you want like this:

     @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    
        switch (item.getItemId()){
    
            case R.id.R.id.action_settings:
                mMenuItem.getItem(0).setIcon(R.drawable.ic_launcher); // to change the fav icon
                //Toast.makeText(this, " " + mMenuItem.getItem(0).getTitle(), Toast.LENGTH_SHORT).show(); <<--- this to check if the item in the index 0 is the one you are looking for
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
    

提交回复
热议问题