一、菜单栏的简单使用:
- 重写Activity的onCreateOptionsMenu()方法,得到menu对象
- menu对象调用add()方法,增加菜单选项。(可用for循环简化)
- 重写Activity的onOptionsItemSelected(MenuItem item)方法,在这个方法里得到菜单选项的编号,添加UI交互。
二、对话框的简单使用(设计模式):
- 得到AlertDialog.Builder对象
- 根据对象调用的set方法确定Dialog类型
- .Builder对象生成Dialog对象
- 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();
}
}
}