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'が必要なことです。
どうやって入手したらいいのかわからない。
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));
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);
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);