【Android入门 六】菜单栏和对话框的约会

一、菜单栏的简单使用:

  1. 重写Activity的onCreateOptionsMenu()方法,得到menu对象
  2. menu对象调用add()方法,增加菜单选项。(可用for循环简化)
  3. 重写Activity的onOptionsItemSelected(MenuItem item)方法,在这个方法里得到菜单选项的编号,添加UI交互。

二、对话框的简单使用(设计模式):

  1. 得到AlertDialog.Builder对象
  2. 根据对象调用的set方法确定Dialog类型
  3. .Builder对象生成Dialog对象
  4. Dialog对象调用show()方法

备注:

注意区分:

setSingleChoiceItems()方法产生的dialog与setItems()产生的对话框的不同。

用(内部)类替代功能的思想,好处:分离,final、成员变量在匿名内部类的使用等


代码实例:

package com.android.listview;

import com.android.port.Action;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MenuActivity extends Activity {
	String[] optionMenu = { "新建", "保存", "更新" };	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO 自动生成的方法存根
		for (int i = 0; i < optionMenu.length; i++) {
			menu.add(0, i, i, optionMenu[i]);
		}
		return super.onCreateOptionsMenu(menu);

	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int itemId = item.getItemId();

		if (itemId == 0) {
			// 提示
			new NewAction().execute();
			
		} else if (itemId == 1) {
			// 单选
			new SaveAction().execute();
			
		} else if (itemId == 2) {
			//更新
			new UpdateAction().execute();
			
		}
		return super.onOptionsItemSelected(item);
	}

	class NewAction implements Action {

		@Override
		public void execute() {
			// TODO 自动生成的方法存根
			// 提示
			AlertDialog.Builder builder = new AlertDialog.Builder(
					MenuActivity.this);
			builder.setTitle("确定");
			builder.setMessage("确定要新建吗?");
			builder.setNegativeButton("确定", new OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(MenuActivity.this, "已经新建", 500).show();
				}
			});
			builder.setPositiveButton("取消", new OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(MenuActivity.this, "取消新建", 500).show();
				}
			});
			AlertDialog dialog = builder.create();
			dialog.show();
		}

	}
	class SaveAction implements Action {
		int position = 0;
		String[] num = new String[] { "One", "Two", "Three" };
		@Override
		public void execute() {
			// TODO 自动生成的方法存根
			//保存			
			AlertDialog.Builder builder = new AlertDialog.Builder(
					MenuActivity.this);
			builder.setTitle("单选");
			builder.setSingleChoiceItems(num, 0, new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(MenuActivity.this, num[which], 500).show();
					position = which;
				}
			});
			builder.setNegativeButton("确定", new OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(MenuActivity.this, num[position] + "已经保存",
							500).show();
				}
			});
			builder.setPositiveButton("取消", new OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(MenuActivity.this, num[position] + "取消保存",
							500).show();
				}
			});
			AlertDialog dialog = builder.create();
			dialog.show();
		}
		
	}
	class UpdateAction implements Action {
		
		@Override
		public void execute() {
			// TODO 自动生成的方法存根
			AlertDialog.Builder builder = new AlertDialog.Builder(
					MenuActivity.this);
			builder.setTitle("更新");
			builder.setItems(new String[] { "One", "Two", "Three" },
					new OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO 自动生成的方法存根

						}
					});

			AlertDialog dialog = builder.create();
			dialog.show();
		}
		
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值