任何组件的创建方式都有两种:一种通过在布局文件中声明创建;另一种是通过代码创建。菜单也不例外,我们既可以在资源文件中声明,也可以在代码中创建
android中的菜单分为选项菜单、上下文菜单和子菜单,都可以在XML文件中声明定义,在代码中通过MenuInflater类使用。本节主要是讲述如何使用菜单资源来声明创建菜单
1、在工程res\menu\目录下创建file_menu.xml菜单资源文件
2、在工程res\layout 目录下创建一个test_menu.xml 布局文件,在该文件中添加一个TextView视图组件用来显示一个提示信息:
<?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:text="测试菜单资源"
android:id="@+id/menuTextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
3、创建TestMenuActivity的类,在其顶部分声明MenuInflater类,在onCreate()方法中实例化该对象,用来加载菜单xml资源
package com.haso.android;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class TestMenuActivity extends Activity {
private MenuInflater mi;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test_menu);
//实例化menuInflater对象
mi = new MenuInflater(this);
}
/**
* 创建菜单
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
//return super.onCreateOptionsMenu(menu);
mi.inflate(R.menu.file_menu, menu);
return true;
}
/**
* 响应菜单项中的单击事件
* 当点击about时显示帮助,单击exit退出程序
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
//return super.onOptionsItemSelected(item);
switch(item.getItemId()){
//显示关于对话框
case R.id.about:
aboutAlert("本实例演示的是如何使用XML菜单资源来定义菜单!");
break;
case R.id.exit:
exitAlert("真的要退出吗?");
break;
}
return true;
}
/*----显示对话框----*/
private void exitAlert(String string) {
//实例化AlertDialog. Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置显示信息
builder.setMessage(string)
.setCancelable(false)
//确定按钮
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//结束activity
finish();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
return;
}
});
//创建对话框
AlertDialog alert = builder.create();
alert.show();
}
private void aboutAlert(String string) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(string)
.setCancelable(false)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
AlertDialog alert = builder.create();
//显示对话框
alert.show();
}
}