在Android中,如何在onOptionsItemSelected()中更改不同MenuItem的标题

时间:2010-11-08 19:13:30

标签: android

在Android中的选项菜单中单击某个MenuItem时,我需要在同一个菜单中更改不同MenuItem的标题。这样做的方法是什么?

单击选项菜单中的MenuItem时,将调用onOptionsItemSelected(MenuItem menuitem)。 您可以更改作为参数传递的MenuItem的标题 onOptionsItemSelected(MenuItem menuitem),但不包含任何其他MenuItem。我需要知道如何更改未作为参数传递给onOptionsItemSelected()的MenuItem的标题,但它属于同一个菜单。

我没有找到办法在onOptionsItemSelected方法(在点击任何MenuItem时调用)中处理包含Menu的方法。

非常感谢。

5 个答案:

答案 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)

MenuItemMenu资源中超过六次,如果您点击菜单,则onPrepareOptionsMenu会被调用一次或两次。

  • 只需点击一下菜单,onPrepareOptionsMenu只会被调用一次

  • 当您点击菜单然后点击“更多”选项,即第六个选项时,会调用onPrepareOptionsMenu两次。

我希望这会对某人有所帮助。