1,在模拟器上或者在真机上都有一个Menu键,点击该键后就会弹出一个菜单,该菜单就是选项菜单。
2,创建一个选项菜单的步骤:
a)覆盖方法onCreateOptionsMenu,通过Menu中的add方法新建菜单并添加菜单项。
b)覆盖方法onContextItemSelected,响应菜单项的点击事件。
3,下面通过一个实例来讲解选项菜单,先通过add方法创建两个菜单项:
<span style="font-size:18px;"><span style="font-size:18px;">@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.main, menu);
/*
*通过add方法添加菜单项
*add方法中有四个参数(groupId,itemId,order,title)
*groupId为分组的Id,itemId为菜单项的Id,order为菜单排序,title为菜单项的文字描述
*/
menu.add(1, 1, 1, "菜单一");
menu.add(1, 2, 1, "菜单二");
return true;
}</span></span>
4,新建两个layout布局文件,当点击 "菜单一"和"菜单二"时,跳转到不同的页面,下面是点击 "菜单一"时对应跳转的页面:
XML代码(second_layout):
<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="这是第二个界面"
android:textSize="18sp"
android:textColor="#ff0000"/>
</LinearLayout></span></span>
class代码:
<span style="font-size:18px;"><span style="font-size:18px;">package com.example.optionmenu;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
}
}</span></span>
5,下面是点击 "菜单二"时对应跳转的页面:
XML代码(three_layout):
<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="这是第三个界面"
android:textSize="18sp"
android:textColor="#ff0000"/>
</LinearLayout></span></span>
class代码:
<span style="font-size:18px;"><span style="font-size:18px;">package com.example.optionmenu;
import android.app.Activity;
import android.os.Bundle;
public class ThreeActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.three_layout);
}
}</span></span>
<span style="font-size:18px;"><span style="font-size:18px;"> @Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
//通过菜单项ID来判断选中了哪个菜单
switch (item.getItemId()) {
//点击菜单一时跳转到第二个界面
case 1:
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
item.setIntent(intent);
break;
//点击菜单二时跳转到第三个界面
case 2:
Intent intent2=new Intent(MainActivity.this,ThreeActivity.class);
item.setIntent(intent2);
break;
}
return super.onOptionsItemSelected(item);
}</span></span>
7,下面给出MainActivity中的完整代码:
<span style="font-size:18px;"><span style="font-size:18px;">package com.example.optionmenu;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.main, menu);
/*
*通过add方法添加菜单项
*add方法中有四个参数(groupId,itemId,order,title)
*groupId为分组的Id,itemId为菜单项的Id,order为菜单排序,title为菜单项的文字描述
*/
menu.add(1, 1, 1, "菜单一");
menu.add(1, 2, 1, "菜单二");
return true;
}
/*
* 设置菜单项的点击监听事件
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
//通过菜单项ID来判断选中了哪个菜单
switch (item.getItemId()) {
//点击菜单一时跳转到第二个界面
case 1:
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
item.setIntent(intent);
break;
//点击菜单二时跳转到第三个界面
case 2:
Intent intent2=new Intent(MainActivity.this,ThreeActivity.class);
item.setIntent(intent2);
break;
}
return super.onOptionsItemSelected(item);
}
}</span></span>
8,最后要在AndroidManifest.xml中声明SecondActivity.class和ThreeActivity.class:
<span style="font-size:18px;"><span style="font-size:18px;"> <activity
android:name="com.example.optionmenu.SecondActivity" >
</activity>
<activity
android:name="com.example.optionmenu.ThreeActivity" >
</activity></span></span>