Android手机用一个按键“Menu”专门来显示菜单,所以,当应用程序设置了菜单,我们便可以通过该按键来操作应用程序的菜单选项。
要实现菜单功能,首先需要通过方法onCreateOptionsMenu来创建菜单,然后需要对其能够触发的事件进行监听,这样才能够在事件监听onOptionsItemSelected中根据不同的菜单选项来执行不同的任务。当然,可以通过XML布局来实现,也可以通过menu.add方法来实现。下面的示例分别采用了这两种不同的方法来实现,效果如图4-31所示。点击键盘上的“Menu”按钮之后,界面如图4-32所示;当选择了“关于”项时,跳转到另一个界面,如图4-33所示:
1、通过XML布局来实现
首先在项目目录的“res”文件夹中建立“Menu”文件夹,然后在其中创建需要的菜单,代码如下:
1
2
3
4
5
6
|
<
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
;
}
}
|
即在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
;
}
}
|