在Android中的选项菜单中单击某个MenuItem时,我需要在同一个菜单中更改不同MenuItem的标题。这样做的方法是什么?
单击选项菜单中的MenuItem时,将调用onOptionsItemSelected(MenuItem menuitem)。 您可以更改作为参数传递的MenuItem的标题 onOptionsItemSelected(MenuItem menuitem),但不包含任何其他MenuItem。我需要知道如何更改未作为参数传递给onOptionsItemSelected()的MenuItem的标题,但它属于同一个菜单。
我没有找到办法在onOptionsItemSelected方法(在点击任何MenuItem时调用)中处理包含Menu的方法。
非常感谢。
答案 0 :(得分:6)
来自Android开发指南:http://developer.android.com/guide/topics/ui/menus.html
打开时更改菜单
仅在第一次打开“选项菜单”时调用
onCreateOptionsMenu()
方法。系统会保留并重新使用您在此方法中定义的菜单,直到您的活动被销毁。如果要在每次打开时更改“选项”菜单,则必须覆盖onPrepareOptionsMenu()
方法。这将传递当前存在的Menu
对象。如果您要根据应用程序的当前状态删除,添加,禁用或启用菜单项,这将非常有用。注意:您永远不应根据当前焦点视图更改选项菜单中的项目。在触摸模式下(当用户未使用轨迹球或d-pad时),视图无法获得焦点,因此您永远不应将焦点用作修改“选项”菜单中项目的基础。如果要提供对视图具有上下文相关性的菜单项,请使用上下文菜单。
答案 1 :(得分:5)
你可以这样做。
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
getMenuInflater().inflate(R.menu.photoviewer_menu, menu);
MenuItem item = menu.findItem(R.id.photoviewer_menu_button);
item.setTitle("title");
return super.onPrepareOptionsMenu(menu);
}
答案 2 :(得分:3)
这肯定会尝试............
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.addappointmentmenu, menu);
menu.findItem(R.id.add_appontment_menu).setTitle("Add Appointment");
//Similarly set for all your menu's has above
return true;
}
答案 3 :(得分:2)
我不确定您是否可以更改标题,但是您可以删除该项目,然后使用具有不同标题的相同ID添加另一个项目。
Menu foo;
foo.removeItem(id);
foo.add(0, id, 0, R.string.a_new_title);
答案 4 :(得分:2)
但MenuItem
在Menu
资源中超过六次,如果您点击菜单,则onPrepareOptionsMenu
会被调用一次或两次。
只需点击一下菜单,onPrepareOptionsMenu
只会被调用一次
当您点击菜单然后点击“更多”选项,即第六个选项时,会调用onPrepareOptionsMenu
两次。
我希望这会对某人有所帮助。