web-dev-qa-db-ja.com

Android Studioでオプションメニューを実装する

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>

enter image description here

10
Lucafraser

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);
        }
    }
21
Amit Vaghela

使用する必要があります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オプションメニューの例

3
IntelliJ Amiya

メニューのようなディレクトリ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);
}
1
Zahan Safallwa

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;
}
1
Eric B.