Androidのサブメニューを試してみました

2011.07.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Android技術者認定試験の勉強をしていた時にオプションメニューとコンテキストメニューの他にサブメニューというのがあることを知ったのでどんなものか試してみました。

以下がサンプルのソースコードになります。 メニューをクリックするとLogCatにメニューのIDが表示されるだけの簡単なものです。

まずはレイアウトのXMLを作成します。 res以下にmenuフォルダを作成してメニューのレイアウトを作成します。 サンプルではsample_submenu.xmlというファイル名にしています。 main.xml特に編集していません。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:id="@+id/open_menu_item" android:title="開く"/>
	<item android:id="@+id/save_menu_item" android:title="保存">
		<menu>
			<item android:id="@+id/save_menu_1" android:title="上書き保存" />
			<item android:id="@+id/save_menu_2" android:title="名前を付けて保存" />
		</menu>
	</item>
</menu>

次にJavaのソースコードです。

package sample.submenu;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class SampleSubMenu extends Activity {

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

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.sample_submenu, menu);
		return true;
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {

    	switch(item.getItemId()){
	    	case R.id.open_menu_item:
	    		Log.d("d", "open_menu_item");
	    		break;
	    	case R.id.save_menu_1:
	    		Log.d("d", "save_menu_1");
	    		break;
	    	case R.id.save_menu_2:
	    		Log.d("d", "save_menu_2");
	    		break;
	    	default:
    	}

    	return true;
    }
}

以下の画像のようになります。