Androidのサブメニューを試してみました
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; } }