1

アクティビティに、アイテムの追加、オプション アイテム、オーバーフロー アイテムの 3 つのアイテムを含むアクション バーがあります。追加アイテムは常にアクション バーに表示されるように設定されているため、オーバーフロー アイテムも同様です。私の問題はオプション項目にあります-オーバーフローメニューに表示したいのですが、オーバーフロー項目(3つのドットのアイコン)をクリックしても何も起こりません。ただし、デバイスの組み込みメニュー ボタンをクリックすると、[オプション] 項目を含むオーバーフロー メニューが表示されます。

私の質問は、オーバーフロー アイコンをクリックしても何も起こらないのに、デバイスの組み込みメニュー ボタンをクリックするとオーバーフロー メニューが表示されるのはなぜですか?

これが私のXMLメニューコードです:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <item
        android:id="@+id/action_add"
        android:icon="@drawable/ic_action_new"
        android:showAsAction="ifRoom"
        android:title="@string/action_add_ringtone"/>

    <item
        android:id="@+id/action_set_options"
        android:showAsAction="never"
        android:title="Options" />

    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/ic_action_overflow"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/action_settings"/>

</menu>

onOptionsItemSelected の私の実装は次のとおりです。

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id) {
        case R.id.action_settings:
            return super.onOptionsItemSelected(item);
        case R.id.action_add:
            pickRingtone(1000);
            return true;
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
4

1 に答える 1

2

onCreateOptionsMenuメソッドをオーバーライドする必要があります( Ctrl+OAndroid Studio 内)。

@Override
public void onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_menu_name, menu);
}

フラグメントの場合、はすでにパラメーターであり、末尾などのどこかでMenuInflater呼び出す必要があります。setHasOptionsMenu(true);onCreate

于 2015-01-17T18:40:02.107 に答える