android学习-对话框
2010-12-06 13:11:42| 分类:
android
| 标签:
|举报
|字号大中小 订阅
package com.kangzye.dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private final static int SIMPLE_DIALOG = 0;
private final static int LIST_DIALOG = 1;
private final static int RADIO_DIALOG = 2;
private final static int CHECKBOX_DIALOG = 3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btn);
Button btn2 = (Button) findViewById(R.id.btn2);
Button btn3 = (Button) findViewById(R.id.btn3);
Button btn4 = (Button) findViewById(R.id.btn4);
registClickListener(btn, SIMPLE_DIALOG);
registClickListener(btn2, LIST_DIALOG);
registClickListener(btn3, RADIO_DIALOG);
registClickListener(btn4, CHECKBOX_DIALOG);
}
private void registClickListener(Button btn,final int flag){
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(flag);
}
});
}
@Override
public Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case SIMPLE_DIALOG:
EditText txt = (EditText) findViewById(R.id.txt);
Builder builder = new AlertDialog.Builder(this);
builder.setTitle("标题");
builder.setMessage(txt.getText().toString());
builder.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1)
.show();
}
});
dialog = builder.create();
break;
case LIST_DIALOG:
Builder builder2 = new AlertDialog.Builder(this);
builder2.setTitle("标题");
builder2.setItems(R.array.items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, dialog+":"+which, 1).show();
}
});
builder2.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1)
.show();
}
});
dialog = builder2.create();
break;
case RADIO_DIALOG:
Builder build3=new AlertDialog.Builder(this);
build3.setTitle("单选框");
build3.setSingleChoiceItems(R.array.items, 2, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alert(dialog+":"+which);
}
});
dialog=build3.create();
build3.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1)
.show();
}
});
break;
case CHECKBOX_DIALOG:
Builder build4=new AlertDialog.Builder(this);
build4.setTitle("复选框");
build4.setMultiChoiceItems(R.array.items, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
alert(dialog+":"+which+":"+isChecked);
}
});
build4.setPositiveButton("确定", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "which:" + which, 1).show();
}
});
dialog=build4.create();
break;
default:
break;
}
return dialog;
}
private void alert(String msg){
Toast.makeText(this, msg, 1).show();
}
}
以上示例了4种对话框:简单对话框、列表对话框、单选对话框、复选对话框
它们都是通过 AlertDialog 实现的。只是有少许不同。
简单对话框 设置builder 的message即可
列表对话框 设置一个List 和一个 DialogInterface.OnClickListener 实例 到其setItems 方法即可当有选项被点击时,DialogInterface.OnClickListener实例的public void onClick(DialogInterface dialog, int which) 方法将被调用,其中 which 就是被点击item的序号,从0开始。这样你就知道是哪个被点击了。这种对话框在选项被点击后即会关闭,所以上面程序中为对话框添加的确定按钮(通过builder2.setPositiveButton("确定", new AlertDialog.OnClickListener() {......});)其实没必要也没有意义,或许在什么都不像选择时用来关闭对话框时还是有用的。
单选对话框 不同之处在于通过方法:build3.setSingleChoiceItems(R.array.items, 2, new DialogInterface.OnClickListener(){...});来设置对话框为单选对话框。其中的2表示默认情况下第二个选项是被选中的。当某个选项被选择后DialogInterface.OnClickListener实例的public void onClick(DialogInterface dialog, int which)方法将被调用。which即为被选择的项的序号,从0开始。此对话框和列表对话框一样,当某一个选项被点击后,对话框就会关闭。
复选对话框 通过方法build4.setMultiChoiceItems(R.array.items, new boolean[]{true,false,true}, new DialogInterface.OnMultiChoiceClickListener(){.....});即可表示此为复选对话框。第一个参数是选项内容。第二个参数是默认那些选项是被选中的。第三个参数的public void onClick(DialogInterface dialog, int which, boolean isChecked); 方法在选项被点击后将被调用,which 和上面一样是点击项的序号,从0开始。isChecked 表示点击完后此选项是否是选中状态。此对话框在选项点击后不会关闭对话框,需要为builder 设置关闭按钮通过方法:build4.setPositiveButton("确定", new AlertDialog.OnClickListener(){...});
评论这张
转发至微博
转发至微博
评论