title: How to change MenuItem icon in ActionBar programmatically
body: <p>How to change MenuItem icon in ActionBar programmatically? I tried to use</p>
  
  <pre><code>MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings);
  menuItem.setIcon(getResources().getDrawable(R.drawable.ic_launcher))
  </code></pre>
  
  <p>but it doesn't work.
  This is my code:</p>
  
  <p>MainActivity</p>
  
  <pre><code>package com.test;
  import android.os.Bundle;
  import android.support.v7.app.ActionBarActivity;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.view.View;
  import android.widget.Button;
  
  public class MainActivity extends ActionBarActivity {
      private Button button;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          button = (Button)findViewById(R.id.button);
          button.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings);
                  menuItem.setIcon(getResources().getDrawable(R.drawable.ic_launcher));
              }
          });
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
  
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          int id = item.getItemId();
          if (id == R.id.action_settings) {
              return true;
          }
          return super.onOptionsItemSelected(item);
      }
  }
  </code></pre>
  
  <p>main.xml</p>
  
  <pre><code>&lt;menu
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      tools:context=".MainActivity" &gt;
  
      &lt;item
          android:icon="@drawable/action_settings"
          android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:orderInCategory="100"
          app:showAsAction="always"/&gt;
  &lt;/menu&gt;
  </code></pre>
  
  <p>activity_main</p>
  
  <pre><code>&lt;LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_height="fill_parent"
      android:layout_width="fill_parent"&gt;
      &lt;Button
          android:id="@+id/button"
          android:text="Set icon"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content" /&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>This is the exception that i've had after running:</p>
  
  <pre><code>MenuItem menuItem = (MenuItem)findViewById(R.id.action_settings);
  
  
  11-09 19:52:40.471    1735-1735/com.test E/AndroidRuntime﹕ FATAL EXCEPTION: main
      java.lang.ClassCastException: android.support.v7.internal.view.menu.ActionMenuItemView
              at com.test.MainActivity$1.onClick(MainActivity.java:19)
              at android.view.View.performClick(View.java:2485)
              at android.view.View$PerformClick.run(View.java:9080)
              at android.os.Handler.handleCallback(Handler.java:587)
              at android.os.Handler.dispatchMessage(Handler.java:92)
              at android.os.Looper.loop(Looper.java:123)
              at android.app.ActivityThread.main(ActivityThread.java:3683)
              at java.lang.reflect.Method.invokeNative(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:507)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
              at dalvik.system.NativeStart.main(Native Method)
  </code></pre>