Androidアプリケーションにオプションメニューを実装するにはどうすればよいですか? Android Developer のコードを試しましたが、エラーが発生します。次のようなものです:要素メニューを宣言する必要があります。これが私のコードです
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
Android:icon="@drawable/ic_new_game"
Android:title="@string/new_game"
Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
Android:icon="@drawable/ic_help"
Android:title="@string/help" />
</menu>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.lucavanraalte.test" >
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@style/AppTheme" >
<activity Android:name=".MainActivity" Android:screenOrientation="portrait">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Javaコードで、このonCreateOptionsMenu
を追加してoptionMenuを表示し、
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu); //your file name
return super.onCreateOptionsMenu(menu);
}
Res\menu\option_menuフォルダーの下に保存し、
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
Android:icon="@drawable/ic_new_game"
Android:title="@string/new_game"
Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
Android:icon="@drawable/ic_help"
Android:title="@string/help" />
</menu>
onOptionsItemSelected
を設定したい場合、つまり、そのouで使用できるonClickイベントを、
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case Android.R.id.new_game:
//your code
// EX : call intent if you want to swich to other activity
return true;
case R.id.help:
//your code
return true;
default:
return super.onOptionsItemSelected(item);
}
}
使用する必要がありますonCreateOptionsMenu (Menu menu)
アクティビティの標準オプションメニューの内容を初期化します。メニューにメニュー項目を配置する必要があります。
これは、オプションメニューが最初に表示されるときに一度だけ呼び出されます。表示されるたびにメニューを更新するには、onPrepareOptionsMenu(Menu)を参照してください。
onCreateOptionsMenu(メニューメニュー)メソッドはActivityクラスでオーバーライドする必要があります。これによりメニューが作成され、ブール値が返されます。 inflateは、XMLリソースからメニュー階層を拡張します。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu); // set your file name
return super.onCreateOptionsMenu(menu);
}
あなたのoption_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/item_First"
Android:title="@string/item_First"
Android:showAsAction="ifRoom"/>
<item Android:id="@+id/save_menu"
Android:title="@string/save"
Android:showAsAction="ifRoom"/>
<item Android:id="@+id/item_Second"
Android:title="@string/item_First"
Android:showAsAction="ifRoom"/>
</menu>
デモを確認してくださいAndroidオプションメニューの例
メニューのようなディレクトリres-> menuにmenu.xml
を作成する必要があります
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
Android:icon="@drawable/ic_new_game"
Android:title="@string/new_game"
Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
Android:icon="@drawable/ic_help"
Android:title="@string/help" />
</menu>
次に、以下のコードでアクティビティからメニューを作成する必要があります
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.help) {
//do something
return true;
}
if (id == R.id.new_game) {
//do something
return true;
}
return super.onOptionsItemSelected(item);
}
menu
ディレクトリーにres
フォルダーを作成し、メニューディレクトリーにmy_menu.xmlという名前のファイルを作成する必要があります。そのファイルに次の行を記述します。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
Android:icon="@drawable/ic_new_game"
Android:title="@string/new_game"
Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
Android:icon="@drawable/ic_help"
Android:title="@string/help" />
</menu>
次に、アクティビティでこれを実行します。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_menu, menu);
return true;
}