How to change MenuItem icon in ActionBar programmatically

You can’t use findViewById() on menu items in onCreate() because the menu layout isn’t inflated yet. You could create a global Menu variable and initialize it in the onCreateOptionsMenu() and then use it in your onClick().

private Menu menu;

In your onCreateOptionsMenu()

this.menu = menu;

In your button’s onClick() method

menu.getItem(0).setIcon(ContextCompat.getDrawable(this, R.drawable.ic_launcher));

Leave a Comment