How to get an MenuItem by id

2020-03-01 07:31发布

I have my menuItem on my res/menu/student_marks.xml file:

<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>

Now i need for this item to set a title.in a specific part of my app.

I can work with a specific item in this method:

onOptionsItemSelected(MenuItem item)

the problem is that i need the item 'action_selected_year' without of this method but in another part of my program.
I don't have idea how to get it.

3条回答
太酷不给撩
2楼-- · 2020-03-01 07:40
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;
    }

example: change icon on first menuItem (optionsMenu should be != null)

optionsMenu.getItem(0).setIcon(getResources()
    .getDrawable(R.drawable.ic_action_green));
查看更多
我欲成王,谁敢阻挡
3楼-- · 2020-03-01 07:54
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;
}

And to get a menu item:

MenuItem item = optionsMenu.findItem(R.id. action_selected_year);
查看更多
姐就是有狂的资本
4楼-- · 2020-03-01 07:55

If your menu inside NavigationView example:

<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" />

then you can find your menu item by id like this

NavigationView navigationView = findViewById(R.id.navigationView);
Menu menu = navigationView.getMenu();
MenuItem menuItem = menu.findItem(R.id.your_menu_item_id);
查看更多
登录 后发表回答