Android:onCreateOptionsMenu() 项目操作

2024-01-04

我有一个通过以下方式创建的菜单:

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    menu.add("Email");

    return super.onCreateOptionsMenu(menu);
  }

但我不记得如何设置 onclicklistener,因此当选择它时我可以运行我的电子邮件功能。


覆盖onOptionsItemSelected(MenuItem item)。所以它会像

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case 0:
            // do whatever
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

EDIT:

既然已经得到了这么多分,我应该指出的是is将 ID 添加到菜单选项非常好。确保它们始终唯一的一个好方法是将它们定义为ids.xml放入的资源res/values folder.

ids.xml

<resources>
    <item name="menu_action1" type="id"/>
    <item name="menu_action2" type="id"/>
    <item name="menu_action3" type="id"/>
</resources>

然后当你覆盖onCreateOptionsMenu(Menu menu)方法,您可以像这样使用 ID:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu);

  menu.add(Menu.NONE, R.id.menu_action1, Menu.NONE, R.string.menu_action1);
  menu.add(Menu.NONE, R.id.menu_action2, Menu.NONE, R.string.menu_action1);

  return true;
}

覆盖onOptionsItemSelected(MenuItem item).

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_action1:
            // do whatever
            return true;
        case R.id.menu_action2:
            // do whatever
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

你这样做的原因是Activity会用菜单选项覆盖它,但是Fragments还可以添加自己的菜单项。使用ids.xml确保 ID 是唯一的,无论放置的顺序如何。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:onCreateOptionsMenu() 项目操作 的相关文章

随机推荐