この記事は公開されてから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;
}
}