Android UI How to - Handle Options Item Selected Event








The following code shows how to Handle Options Item Selected Event.

Example

Main layout xml file

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/uilayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background">
    
  <ImageButton android:id="@+id/button_one"
          android:layout_width="wrap_content"
         android:layout_height="wrap_content"
          android:src="@drawable/button1"
          android:paddingTop="5px"
          android:background="#00000000">
  </ImageButton>
  
  <TextView  android:id="@+id/TextView01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Sample Text" 
        android:textColor="#CCCC77" 
        android:padding="12dip">
  </TextView>
  
  <ImageView  android:id="@+id/ImageView01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/image1">
  </ImageView>
  
</LinearLayout>

Menu xml file

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/buttonone"
          android:icon="@drawable/image1icon"
          android:title="@string/showimage1" />
          
    <item android:id="@+id/buttontwo"
          android:icon="@drawable/image2icon"
          android:title="@string/showimage2" />
          
    <item android:id="@+id/buttonthree"
          android:icon="@drawable/menu3icon"
          android:title="@string/showwhite" />
          
    <item android:id="@+id/buttonfour"
          android:icon="@drawable/menu4icon"
          android:title="@string/showblack" />
          
    <item android:id="@+id/buttonfive"
          android:icon="@drawable/menu5icon"
          android:title="@string/showalert" />
          
</menu>

Main Activity Java code

/* w w w  .  j  a va2 s.  co m*/
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.app.AlertDialog;
import android.content.DialogInterface;

public class MainActivity extends Activity {
    @Override      
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }  
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.mainmenu, menu);
        return true;
    }    
    public boolean onOptionsItemSelected(MenuItem item) {
      LinearLayout bkgr = (LinearLayout)findViewById(R.id.uilayout);      
      final ImageView image = (ImageView)findViewById(R.id.ImageView01);
      
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Pick an Image!")
               .setMessage("Please Select Image One or Image Two:")
               .setCancelable(false)

               .setPositiveButton("IMAGE 1", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                        image.setImageResource(R.drawable.image1);
                   }
               })

               .setNegativeButton("IMAGE 2", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                        image.setImageResource(R.drawable.image2);
                   }
               });

        switch (item.getItemId()) {
        case R.id.buttonone:
          image.setImageResource(R.drawable.image1);
            return true;
        case R.id.buttontwo:
          image.setImageResource(R.drawable.image2);
            return true;
        case R.id.buttonthree:
          bkgr.setBackgroundResource(R.color.background2);
            return true;
        case R.id.buttonfour:
          bkgr.setBackgroundResource(R.color.background);
            return true;
        case R.id.buttonfive:
            builder.show();        
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
}