android菜单资源

来源:互联网 发布:mac otf字体怎么安装 编辑:程序博客网 时间:2024/06/05 16:22

任何组件的创建方式都有两种:一种通过在布局文件中声明创建;另一种是通过代码创建。菜单也不例外,我们既可以在资源文件中声明,也可以在代码中创建

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();
 }
 
 
 
}