読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

Androidでメニューを表示する

Android

Androidでメニューを表示する方法を簡単にまとめてみました。

メニューを表示してみる

Activityを継承しているクラスでonCreateOptionsMenuメソッドをオーバーライドして、メニューを追加します。

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class Sample extends Activity {

    private static final int MENU_ID1 = Menu.FIRST;

    private static final int MENU_ID2 = Menu.FIRST + 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(Menu.NONE, MENU_ID1, Menu.NONE, "Menu1");
        menu.add(Menu.NONE, MENU_ID2, Menu.NONE, "Menu2");
        return super.onCreateOptionsMenu(menu);
    }

}


これを実行して、メニューボタンを押すとメニューが表示されます。
f:id:STAR_ZERO:20100711130549p:image

メニューが選択されたときに処理をする

メニューが選択されたときに処理をするにはonOptionsItemSelectedメソッドをオーバーライドします。
引数に選択されたメニューIDが渡されるので、それによって処理を分けます。
下の例ではダイアログを表示しています。

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        AlertDialog.Builder dialog = new AlertDialog.Builder(this);

        switch (item.getItemId()) {
        case MENU_ID1:
            dialog.setMessage("メニュー1");
            dialog.show();
            return true;

        case MENU_ID2:
            dialog.setMessage("メニュー2");
            dialog.show();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


実行してメニューを選択すると下のようにダイアログが表示されます。
f:id:STAR_ZERO:20100711131550p:image

メニューにアイコンを表示してみる

メニューにアイコンを表示するには、MenuItemクラスのsetIconメソッドでアイコンを指定します。
先ほどのonCreateOptionsMenuメソッドを下のように変更します。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuItem item1 = menu.add(Menu.NONE, MENU_ID1, Menu.NONE, "Menu1");
        MenuItem item2 = menu.add(Menu.NONE, MENU_ID2, Menu.NONE, "Menu2");
        item1.setIcon(android.R.drawable.ic_menu_add);
        item2.setIcon(android.R.drawable.ic_menu_preferences);
        return super.onCreateOptionsMenu(menu);
    }


実行してメニューを表示するとアイコンが追加されています。
f:id:STAR_ZERO:20100711132923p:image


今回使ったアイコンはAndroidが持っているシステムアイコンを使用しています。
他にどんなアイコンがあるかはココが参考になると思います。