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

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



}

更多相关文章

  1. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  2. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  3. 【Android笔记】Android(安卓)Resourse
  4. APP瘦身这一篇就够了
  5. Android的搜索框架实例详解
  6. GitHub“最受欢迎的开源项目” TOP 50 android开源项目 直接拿来
  7. android5.0以后 framework 添加资源 编译 id can not find symbo
  8. android项目目录介绍之二
  9. Android之——史上最简单旋转菜单实现效果

随机推荐

  1. 请查收,32 道 MyBatis 的高频面试题已答完
  2. 聊聊我是怎么开发Java面试题小程序的
  3. Class 文件的结构
  4. 图解 Class 文件结构
  5. 《深入理解 Java 虚拟机·第三版》读书笔
  6. 常见 JVM dump 指令整理
  7. 抽点时间写篇文章都是享受
  8. 学C Day-2
  9. 翻一翻 Java 的发展史,闻一闻那浓厚的咖啡
  10. 【Demo见真章】投稿赢HarmonyOS手机Beta