2013年10月19日土曜日

Activityのmenuを使う方法

Activityのmenuを使う方法です。

レイアウトはmenuで設定して、処理はActivityのメソッドをオーバーライドです。


○まず、menuのレイアウト例
 /res/menu/menu_samp.xml
 メニュー項目3つ。その1つめはサブメニュー付きにしてみた

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/item1" android:title="t1">
        <menu>
            <item android:id="@+id/item4" android:title="sub1"/>
            <item android:id="@+id/item5" android:title="sub2"/>
            <item android:id="@+id/item6" android:title="sub3"/>
        </menu>
    </item>
    <item android:id="@+id/item2" android:title="t2"></item>
    <item android:id="@+id/item3" android:title="t3"></item>
</menu>


○ソースコード
Activity のクラスの中に以下のメソッドを置く


    //メニューボタンが表示されたときのレイアウトを指定する
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = this.getMenuInflater();
        menuInflater.inflate(R.menu.menu_samp, menu);
        
        return true;
    }

    //ここで選択されたときの処理を入れる
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch(item.getItemId()) {
        case R.id.item1 :
            return true;
        case R.id.item2 :
            return true;
        case R.id.item3 :
            return true;            
        case R.id.item4 : //sub1
            return true;
        case R.id.item5 : //sub2
            return true;
        case R.id.item6 : //sub3
            return true;
        }  
        return super.onMenuItemSelected(featureId, item);
    }



名前の付け方を工夫しないと数が多くなったときに困りそうですね。
細かいオプションはlayoutで指定できるのでらくそうです。