我的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'而不使用此方法,但在我的程序的另一部分。
我不知道如何获得它。
答案 0 :(得分:14)
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);
答案 1 :(得分:9)
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));
答案 2 :(得分:1)
如果您的菜单位于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);