Android界面开发之菜单Menu用法

Android手机用一个按键“Menu”专门来显示菜单,所以,当应用程序设置了菜单,我们便可以通过该按键来操作应用程序的菜单选项。

要实现菜单功能,首先需要通过方法onCreateOptionsMenu来创建菜单,然后需要对其能够触发的事件进行监听,这样才能够在事件监听onOptionsItemSelected中根据不同的菜单选项来执行不同的任务。当然,可以通过XML布局来实现,也可以通过menu.add方法来实现。下面的示例分别采用了这两种不同的方法来实现,效果如图4-31所示。点击键盘上的“Menu”按钮之后,界面如图4-32所示;当选择了“关于”项时,跳转到另一个界面,如图4-33所示:

      

1、通过XML布局来实现
首先在项目目录的“res”文件夹中建立“Menu”文件夹,然后在其中创建需要的菜单,代码如下:

1
2
3
4
5
6
< menu xmlns:android = "http://schemas.android.com/apk/res/android" >
     < item android:id = "@+id/about" android:title = "关于" >
         < item android:id = "@+id/exit" android:title = "退出" >
         </ item >
     </ item >
</ menu >

 

然后在onCreateOptionsMenu方法中通过onCreateOptionsMenu方法来装载这个菜单布局文件。在onOptionsItemSelected监听方法中通过getItemId方法获得当前选中的菜单的“Id",代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.yarin.android.Examples_04_13;
  
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
  
public class Activity01 extends Activity
{
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
     }
  
     /*创建menu*/
     public boolean onCreateOptionsMenu(Menu menu)
     {
         MenuInflater inflater = getMenuInflater();
         //设置menu界面为res/menu/menu.xml
         inflater.inflate(R.menu.menu, menu);
         return true;
     }
  
     /*处理菜单事件*/
     public boolean onOptionsItemSelected(MenuItem item)
     {
         //得到当前选中的MenuItem的ID,
         int item_id = item.getItemId();
  
         switch (item_id)
         {
             case R.id.about:
                 /* 新建一个Intent对象 */
                 Intent intent = new Intent();
                 /* 指定intent要启动的类 */
                 intent.setClass(Activity01.this, Activity02.class);
                 /* 启动一个新的Activity */
                 startActivity(intent);
                 /* 关闭当前的Activity */
                 Activity01. this .finish();
                 break ;
             case R.id.exit:
                 Activity01. this .finish();
                 break ;
         }
         return true ;
     }
}
2、通过Menu.add方法实现
即在onCreateOptionsMenu方法中通过“menu.add(0,0,0,R.string.ok);”来实现创建一个菜单选项,代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.yarin.android.Examples_04_13;
  
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
  
public class Activity02 extends Activity
{
     public void onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         /* 设置显示main2.xml布局 */
         setContentView(R.layout.main2);
     }
  
     /*创建menu*/
     public boolean onCreateOptionsMenu(Menu menu)
     {
         //为menu添加内容
         menu.add(0, 0, 0, R.string.ok);
         menu.add(0, 1, 1, R.string.back);
         return true;
     }
  
     /*处理menu的事件*/
     public boolean onOptionsItemSelected(MenuItem item)
     {
         //得到当前选中的MenuItem的ID,
         int item_id = item.getItemId();
  
         switch (item_id)
         {
             case 0:
             case 1:
                 /* 新建一个Intent对象 */
                 Intent intent = new Intent();
                 /* 指定intent要启动的类 */
                 intent.setClass(Activity02.this, Activity01.class);
                 /* 启动一个新的Activity */
                 startActivity(intent);
                 /* 关闭当前的Activity */
                 Activity02. this .finish();
                 break ;
         }
         return true ;
     }
}
这样,我们就通过两种方法介绍了Android Menu的用法,希望对你有所帮助,谢谢阅读!

转载于:https://www.cnblogs.com/king-77024128/articles/2287578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值