web-dev-qa-db-ja.com

IDでMenuItemを取得する方法

Res/menu /student_marks.xmlファイルにmenuItemがあります。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    tools:context=".StudentMarks" >
    <item Android:id="@+id/action_selected_year"
        Android:title="@string/action_selected_year"
        Android:showAsAction="withText|ifRoom"
        style="@style/AppTheme" />
</menu>

今、私はこのアイテムが私のアプリの特定の部分でタイトルを設定する必要があります。

このメソッドで特定のアイテムを操作できます。

onOptionsItemSelected(MenuItem item)

問題は、このメソッドを使用せずに、プログラムの別の部分にアイテム 'action_selected_year'が必要なことです。
どうやって入手したらいいのかわからない。

13
Giovanni Far
Menu optionsMenu;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.main, menu);
       //  store the menu to var when creating options menu
       optionsMenu = menu;
    }

例:最初のmenuItemのアイコンを変更します(optionsMenuは!= nullである必要があります)

optionsMenu.getItem(0).setIcon(getResources()
    .getDrawable(R.drawable.ic_action_green));
7
Michael D.
Menu optionsMenu;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.main, menu);
   //  store the menu to var when creating options menu
   optionsMenu = menu;
}

そしてメニュー項目を取得するには:

MenuItem item = optionsMenu.findItem(R.id. action_selected_year);
26
Esteban Atenor

NavigationView内のメニューの場合例:

<com.google.Android.material.navigation.NavigationView 
    Android:id="@+id/navigationView"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:layout_gravity="start"
    app:menu="@menu/menu_layout" />

次に、このようなIDでメニュー項目を見つけることができます

NavigationView navigationView = findViewById(R.id.navigationView);
Menu menu = navigationView.getMenu();
MenuItem menuItem = menu.findItem(R.id.your_menu_item_id);
0
Md Masud