Android:onCreateOptionsMenu() 项目操作

发布于 2024-11-19 15:06:23 字数 238 浏览 3 评论 0原文

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

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

    return super.onCreateOptionsMenu(menu);
  }

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

I have a menu created through:

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

    return super.onCreateOptionsMenu(menu);
  }

But I can't remember how to set a onclicklistener so when its selected I can run my email function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦醒灬来后我 2024-11-26 15:06:24

覆盖onOptionsItemSelected(MenuItem item)。所以这就像

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

编辑:

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

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 是唯一的,无论它们的放置顺序如何。

Override onOptionsItemSelected(MenuItem item). So it would be like

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

EDIT:

Since this has gotten so many points, I should note that it is very good to add ID's to the menu options. A good way to ensure they are always unique is to define them in an ids.xml resource that is put in the 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>

Then when you override the onCreateOptionsMenu(Menu menu) method, you can use the IDs like so:

@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;
}

Override 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);
    }
}

The reason you do this is the Activity would override this with menu options, but Fragments can also add their own menu items. Using the ids.xml ensures the IDs are unique no matter which order they are placed.

羁绊已千年 2024-11-26 15:06:24

那是行不通的。您应该为菜单项定义 ID:

public static final int MENU_ADD = Menu.FIRST;
public static final int MENU_DELETE = Menu.FIRST + 1;

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

    menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "Add");
    menu.add(Menu.NONE, MENU_DELETE, Menu.NONE, "Delete");
    return true;
}

   @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch(item.getItemId())
        {
            case MENU_ADD:

            return true;
        case MENU_DELETE:

            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

That won't work. You should define IDs for your menu items:

public static final int MENU_ADD = Menu.FIRST;
public static final int MENU_DELETE = Menu.FIRST + 1;

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

    menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "Add");
    menu.add(Menu.NONE, MENU_DELETE, Menu.NONE, "Delete");
    return true;
}

   @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch(item.getItemId())
        {
            case MENU_ADD:

            return true;
        case MENU_DELETE:

            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
策马西风 2024-11-26 15:06:24

来自 Android 开发者指南

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
    newGame();
    return true;
case R.id.help:
    showHelp();
    return true;
default:
    return super.onOptionsItemSelected(item);
}
}

From Android developer guide

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
    newGame();
    return true;
case R.id.help:
    showHelp();
    return true;
default:
    return super.onOptionsItemSelected(item);
}
}
失眠症患者 2024-11-26 15:06:24
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case R.id.itemid:
            //do cool stuff
            break;
          }
     }
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case R.id.itemid:
            //do cool stuff
            break;
          }
     }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文