How to change MenuItem icon in ActionBar programmatically? I tried to use
MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings);
menuItem.setIcon(
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);
}