2

プロジェクトがあり、誰かがハードウェア ボタン メニューをクリックすると、3 つの異なるオプションが表示されます。

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>

<item
    android:id="@+id/action_information"
    android:title="@string/action_information"/>

 <item
    android:id="@+id/action_impressum"
    android:title="@string/action_impressum"/>

設定、情報、印象的な活動を作成しました。これで、誰かが適切なメニュー サブアイテムをクリックすると、それらを表示できるはずです。しかし、私にはそれを行う方法がありません。ボタンをクリックして新しいアクティビティを表示する方法を知っています:

View button = findViewById(R.id.button_pong);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent startActivity = new Intent(v.getContext(),
                        PongActivity.class);
                startActivity(startActivity);
            }
        });

ハードウェアボタンと似ていますか?

4

2 に答える 2

4

アクティビティで、をオーバーライドしますonCreateOptionsMenu()。例:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater mnuInflater = getSupportMenuInflater();
    mnuInflater.inflate(R.menu.your_menu, menu); // your_menu IS THE MENU XML YOU HAVE CREATED
    return super.onCreateOptionsMenu(menu);
}

onOptionsItemSelected()そして、関数を実行するには (あなたの場合はアクティビティを開始します)、. 例えば:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case R.id.action_settings:

        // DO SOMETHING HERE

        return true;

    case R.id.action_information:

        // DO SOMETHING HERE

        return true;

    case R.id.action_impressum:

        // DO SOMETHING HERE

        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

たとえば、ユーザーがメニュー XML で をPongActivity選択したときにを開始する必要がある場合、そのブロックは次のようになります: (このコードは上記のように に入ります)action_settingsonOptionsItemSelected()

case R.id.action_settings:
    // START THE PongActivity
    Intent startActivity = new Intent(this, PongActivity.class);
    startActivity(startActivity);

    return true;
于 2013-05-05T11:43:01.950 に答える
1

公式ドキュメントを読んでください。「クリックイベントの処理」のビットを探してください。

ご想像のとおり、メカニズムは onClick ハンドラーのように漠然と動作しますが、アクティビティで定義された各メニュー項目のケースを含む大きな switch ステートメントを内部に持つ onOptionsItemSelected() という別のメソッドがあります。

startActivity(intent) コードは適切なケースに入ります。

于 2013-05-05T11:35:34.490 に答える