9

プログラムでメニューオプションを選択する方法はありますか?基本的に、ビュー内のボタンで特定のメニューオプションを押すのと同じアクションを実行する必要があります。onOptionsItemSelected(MenuItem item)を呼び出そうと思っていましたが、メニュー項目に何を入れるべきかわかりません。

4

3 に答える 3

17

はい、メニューオプションを選択する方法があります!そして、あなたはonOptionsItemSelected(MenuItem item)を呼び出すことについて正しいですここにMenuItemを取得する方法があります:

1)最初に行う必要があるのは、ここでアクティビティ内のMenuクラスの参照を取得することです。

private Menu menu;

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
   this.menu = menu;
   return super.onCreateOptionMenu(menu);
}

2)基本的に、Menuクラスにはすべてのメニュー項目が含まれています。したがって、この参照を取得したら、次のようにメニュークリックをシミュレートします。

onOptionsItemSelected(menu.findItem(R.id.action_id));

...ここで、action_idは、選択するメニュー項目のIDです。このIDはメニューxmlにあります。

于 2013-08-17T14:21:07.477 に答える
15

両方のUIイベントで共通のメソッドを呼び出さないのはなぜですか?

于 2012-11-28T22:06:29.217 に答える
2

私もこれを探していました。アイテムがチェックされたときに使用されるメソッドを呼び出すことは理にかなっていますが、UIでチェックされたメニューアイテムは設定されません。

だから私がやったことは:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

MenuItem menuItem = (MenuItem)navigationView.getMenu().findItem(R.id.nav_menu_item_1);
        menuItem.setChecked(true);
        onNavigationItemSelected(menuItem);

以下は私にとって望み通りに機能しませんでした:

onOptionsItemSelected(menu.findItem(R.id.action_id));

于 2017-09-29T19:51:50.693 に答える