Menu基本介绍实现

Activity类中的onCreateOptionsMenu事件方法用来创建选项菜单,该方法的定义如下:
public boolean onCreateOptionsMenu(Menu menu);

一般需要将创建选项菜单的代码放在onCreateOptionsMenu方法中,通过menu.add方法可以添加一个选项菜单项。该方法有4中重载形式:

public abstract MenuItem add(CharSequence title)

public abstract MenuItem add(int titleRes)

public abstract MenuItem add(int groupId, int itemId, int order,CharSequence title)

public abstract MenuItem add(int groupId, int itemId, int order, int titleRes)

微笑groupId:菜单项的分组ID,该参数一般用于带选项按钮的菜单。参数值可以是负整数、0和正整数。

微笑itemId:当前添加的菜单项的ID。该参数值可以是负整数、0和正整数。

微笑order:菜单显示顺序,参数值必须是0和正整数,不能为负整数,采用从左到右,从上到下显示。

微笑title或者titleRes:菜单项标题的stringID或者字符串。

1.添加选项菜单项

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         MenuItem addMenuItem = menu.add(111"添加");  
  4.         MenuItem okMenuItem = menu.add(122"OK");  
  5.         MenuItem deleteMenuItem = menu.add(133"删除");  
  6.         return true;  
  7.     }  

2.给选项菜单项添加图标

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         MenuItem addMenuItem = menu.add(111"添加");  
  4.         MenuItem okMenuItem = menu.add(122"OK");  
  5.         MenuItem deleteMenuItem = menu.add(133"删除");  
  6.         return true;  
  7.     }  

3.关联Activity

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         // Inflate the menu; this adds items to the action bar if it is present.  
  4.         getMenuInflater().inflate(R.menu.main, menu);  
  5.         MenuItem addMenuItem = menu.add(111"添加");  
  6.         MenuItem okMenuItem = menu.add(122"OK");  
  7.         MenuItem deleteMenuItem = menu.add(133"删除");  
  8.           
  9.         addMenuItem.setIcon(R.drawable.add);  
  10.         okMenuItem.setIcon(R.drawable.ok);  
  11.         deleteMenuItem.setIcon(R.drawable.delete);  
  12.           
  13.         //将DeleteActivity与delete菜单项进行关联  
  14.         deleteMenuItem.setIntent(new Intent(this, DeleteActivity.class));  
  15.         return true;  
  16.     }  

4.响应菜单的单击动作

[java]  view plain  copy
  1. package cn.yh.menufirst;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.Menu;  
  7. import android.view.MenuItem;  
  8. import android.view.MenuItem.OnMenuItemClickListener;  
  9. import android.widget.Toast;  
  10.   
  11. public class MainActivity extends Activity implements OnMenuItemClickListener{  
  12.   
  13.     private MenuItem addMenuItem;  
  14.     private MenuItem okMenuItem;  
  15.     private MenuItem deleteMenuItem;  
  16.       
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.activity_main);  
  21.     }  
  22.   
  23.     @Override  
  24.     public boolean onCreateOptionsMenu(Menu menu) {  
  25.         // Inflate the menu; this adds items to the action bar if it is present.  
  26.         getMenuInflater().inflate(R.menu.main, menu);  
  27.         addMenuItem = menu.add(111"添加");  
  28.         okMenuItem = menu.add(122"OK");  
  29.         deleteMenuItem = menu.add(133"删除");  
  30.           
  31.         addMenuItem.setIcon(R.drawable.add);  
  32.         okMenuItem.setIcon(R.drawable.ok);  
  33.         deleteMenuItem.setIcon(R.drawable.delete);  
  34.           
  35.         //给addMenuItem、deleteMenuItem和okMenuItem设置单击事件监听  
  36.         addMenuItem.setOnMenuItemClickListener(this);  
  37.         okMenuItem.setOnMenuItemClickListener(this);  
  38.         deleteMenuItem.setOnMenuItemClickListener(this);          
  39.         return true;  
  40.     }  
  41.   
  42.     @Override  
  43.     public boolean onMenuItemClick(MenuItem item) {  
  44.         // TODO Auto-generated method stub  
  45.         switch (item.getItemId()) {  
  46.         case 1:  
  47.             startActivity(new Intent(this, AddActivity.class));  
  48.             break;  
  49.         case 2:  
  50.             startActivity(new Intent(this, OkActivity.class));  
  51.             break;  
  52.         case 3:  
  53.             startActivity(new Intent(this, DeleteActivity.class));  
  54.             break;  
  55.         default:  
  56.             break;  
  57.         }  
  58.         return true;  
  59.     }  
  60. }  

当在onMenuItemClick返回true时,则与菜单项关联的Activity失效。也就是说,系统调用单击事件方法后,就不会调用startActivity方法显示与菜单项相关联的Activity。如下:

[java]  view plain  copy
  1. package cn.yh.menufirst;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.view.Menu;  
  7. import android.view.MenuItem;  
  8. import android.view.MenuItem.OnMenuItemClickListener;  
  9. import android.widget.Toast;  
  10.   
  11. public class MainActivity extends Activity implements OnMenuItemClickListener{  
  12.   
  13.     private MenuItem addMenuItem;  
  14.     private MenuItem okMenuItem;  
  15.     private MenuItem deleteMenuItem;  
  16.       
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.activity_main);  
  21.     }  
  22.   
  23.     @Override  
  24.     public boolean onCreateOptionsMenu(Menu menu) {  
  25.         // Inflate the menu; this adds items to the action bar if it is present.  
  26.         getMenuInflater().inflate(R.menu.main, menu);  
  27.         addMenuItem = menu.add(111"添加");  
  28.         okMenuItem = menu.add(122"OK");  
  29.         deleteMenuItem = menu.add(133"删除");  
  30.           
  31.         addMenuItem.setIcon(R.drawable.add);  
  32.         okMenuItem.setIcon(R.drawable.ok);  
  33.         deleteMenuItem.setIcon(R.drawable.delete);  
  34.           
  35.         //将DeleteActivity与delete菜单项进行关联  
  36.         deleteMenuItem.setIntent(new Intent(this, DeleteActivity.class));  
  37.         //给addMenuItem、deleteMenuItem和okMenuItem设置单击事件监听  
  38.         addMenuItem.setOnMenuItemClickListener(this);  
  39.         okMenuItem.setOnMenuItemClickListener(this);  
  40.         deleteMenuItem.setOnMenuItemClickListener(this);  
  41.         return true;  
  42.     }  
  43.   
  44.     @Override  
  45.     public boolean onMenuItemClick(MenuItem item) {  
  46.         // TODO Auto-generated method stub  
  47.         switch (item.getItemId()) {  
  48.         case 1:  
  49.             startActivity(new Intent(this, AddActivity.class));  
  50.             break;  
  51.         case 2:  
  52.             startActivity(new Intent(this, OkActivity.class));  
  53.             break;  
  54.         case 3:  
  55. //          startActivity(new Intent(this, DeleteActivity.class));  
  56.             Toast.makeText(this, R.string.onMenuItemClickDelete, Toast.LENGTH_LONG).show();  
  57.             break;  
  58.         default:  
  59.             break;  
  60.         }  
  61.         return true;  
  62.     }  
  63.   
  64. }  

这时候:当单击delete菜单项时,只会提示R.string.onMenuItemClickDelete内容,而不会打开DeleteActivity。

5.使用Activity的onMenuItemSelected和onOptionsItemSelected方法来响应菜单项的单击事件

public boolean onMenuItemSelected(int featureId, MenuItem item);

public boolean onOptionsItemSelected(MenuItem item);

这两个方法都有一个item参数,用来传递被单击的菜单项的MenuItem参数对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值