Android menu.add()的参数及使用说明

本文介绍了如何在Android应用中创建并响应菜单项。通过重写`onCreateOptionsMenu`方法添加菜单项,并通过`onOptionsItemSelected`方法处理菜单项的点击事件。

原文:http://blog.youkuaiyun.com/mecho/article/details/7550165


任何一款软件都少不了对“菜单”的使用。在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,复写onCreateOptionsMenu和 onOptionsItemSelected这两个方法。举例如下:

Java代码:

[java]  view plain  copy
  1. @Override  
  2. public boolean onCreateOptionsMenu(Menu menu){  
  3.   
  4. //条用基类的方法,以便调出系统菜单(如果有的话)  
  5. super.onCreateOptionsMenu(menu);  
  6. menu.add(0,1,0,“重新开始”).setIcon(R.drawable.reflash);  
  7. menu.add(0,2,0,"游戏指南").setIcon(R.drawable.help);  
  8. menu.add(0,3,0,"关于游戏").setIcon(R.drawable.info);  
  9. menu.add(0,4,0,"不想玩了").setIcon(R.drawable.exit);  
  10.   
  11. //返回值为“true”,表示菜单可见,即显示菜单  
  12. return true;  
  13.   
  14. }  


menu.add方法的参数:

第一个int类型的groupID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个itemID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。

第三个int类型的orderID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。

第四个String类型的title参数,表示选项中显示的文字。





再看看setIcon方法,就是为菜单添加图标显示,使用用资源文件。
设计好了菜单,继续复写onOptionsItemSelected方法,用以对菜单的响应,示例代码:

java代码:

[java]  view plain  copy
  1. @Override  
  2. public boolean onOptionsItemSelected(MenuItem item){  
  3.   
  4. super.onOptionsItemSelecte(item);  
  5. switch(item.getItemId()){  
  6.   
  7. case1:  
  8. //处理代码  
  9.   
  10. case2:  
  11. //处理代码  
  12.   
  13. case:3  
  14. //处理代码  
  15.   
  16. case:4  
  17. finish();  
  18. break;  
  19. }  
  20. return true;  
  21. }  
package com.oplus.engineermode.aftersale; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import androidx.annotation.Nullable; import com.oplus.engineermode.R; import com.oplus.engineermode.entrance.EngineerFragmentContainer; public class DeviceCalibrationContainer extends EngineerFragmentContainer { private static final int MENU_ITEM_SAVE = Menu.FIRST; private static final int MENU_ITEM_CANCEL = Menu.FIRST + 1; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public boolean onCreateOptionsMenu(Menu menu) { if (getFragmentContent().contains("DeviceCalibrationActivity")) { menu.add(0, 1, Menu.NONE, "Batch Test Mode"); menu.add(0, 2, Menu.NONE, "Reset All"); return true; } else if (getFragmentContent().contains("AdvancedSettings")) { menu.add(0, MENU_ITEM_SAVE, 0, R.string.wifi_ip_settings_menu_save).setIcon(android.R.drawable.ic_menu_save); menu.add(0, MENU_ITEM_CANCEL, 0, R.string.wifi_ip_settings_menu_cancel).setIcon(android.R.drawable.ic_menu_close_clear_cancel); } return super.onCreateOptionsMenu(menu); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return super.onKeyDown(keyCode, event); } @Override public boolean onOptionsItemSelected(MenuItem menuItem) { if (getFragmentContent().contains("DeviceCalibrationActivity")) { return ((DeviceCalibrationActivity) getFragment()).onOptionsItemSelected(menuItem); } return super.onOptionsItemSelected(menuItem); } } 具体代码意思
最新发布
11-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值