打开res/values/strings.xml,加入显示菜单所需要的字符串:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Demo1</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">设置</string>
<string name="action_about">关于</string>
<string name="action_exit">退出</string>
<string name="action_openactivity">打开另一个</string>
<string name="action_phoneCall">打电话</string>
<string name="action_sendSMS">发短信</string>
</resources>
打开res/menu/main.xml,加入菜单项:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.demo1.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
<item
android:id="@+id/action_about"
android:orderInCategory="100"
android:title="@string/action_about"
app:showAsAction="never"/>
<item
android:id="@+id/action_exit"
android:orderInCategory="100"
android:title="@string/action_exit"
app:showAsAction="never"/>
</menu>
打开MainActivity.java,修改onOptionItemSelected方法:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings)
{
return true;
}
switch(id)
{
case R.id.action_about:
StringBuilder sb=new StringBuilder();
sb.append("手机型号:".concat(android.os.Build.MODEL).concat("\n"));
sb.append("SDK版本:".concat(Integer.toString(android.os.Build.VERSION.SDK_INT)).concat("\n"));
sb.append("系统版本:".concat(android.os.Build.VERSION.RELEASE).concat("\n"));
sb.append("源码控制版本:".concat(android.os.Build.VERSION.INCREMENTAL).concat("\n"));
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_name);
builder.setMessage(sb.toString());
builder.setPositiveButton("确定",null);
builder.create().show();
break;
case R.id.action_exit:
android.os.Process.killProcess(android.os.Process.myPid());
break;
}
return super.onOptionsItemSelected(item);
}
运行后按手机上的菜单键后如下图:
MainActivity.onOptionsItemSelected方法的参数就是当前选中的菜单项,通过item.getItemId()返回菜单项的Id,这个和menu/main.xml中定义的是相对应的。其中,action_exit会响应退出菜单将进程结束,调用了android.os.Process.killProcess(android.os.Process.myPid()),而action_about则响应关于菜单调用对话框来显示系统的部分信息,对话框则使用了AlertDialog.Builder.