MainActivity
package com.example.dialog_study;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt1 = (Button)this.findViewById(R.id.bt1);
Button bt2 = (Button)this.findViewById(R.id.bt2);
bt1.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("title")
.setMessage("message")
.setPositiveButton("ok", dialog1)//绑定dialog1为监听器
.setNegativeButton("no", dialog1)//绑定dialog1为监听器
.setNeutralButton("i don't know", dialog1)//绑定dialog1为监听器
.setCancelable(false)//false返回键不可用,true则返回键可用
.show();
}
});
bt2.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
MyDialog md = new MyDialog(MainActivity.this);//自定义的一个dialog类
}
});
}
DialogInterface.OnClickListener dialog1 = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
if(arg1 == DialogInterface.BUTTON_POSITIVE) {
Toast.makeText(MainActivity.this,
"ok", Toast.LENGTH_SHORT).show();
}
if(arg1 == DialogInterface.BUTTON_NEGATIVE) {
Toast.makeText(MainActivity.this,
"no", Toast.LENGTH_SHORT).show();
}
if(arg1 == DialogInterface.BUTTON_NEUTRAL) {
Toast.makeText(MainActivity.this,
"i don't know", Toast.LENGTH_SHORT).show();
}
}
};
}
MyDialog类(应该能定义在内部,而且会更加方便。)
package com.example.dialog_study;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.EditText;
import android.widget.Toast;
public class MyDialog {
public MyDialog(){};
private EditText et ;
public MyDialog(final Context context){
AlertDialog.Builder bd = new Builder(context);//将activity作为参数传进来
this.et = new EditText(context);
bd.setTitle("title");
bd.setIcon(android.R.drawable.ic_dialog_alert);
bd.setView(et);//添加一个输入框的视图
bd.setPositiveButton("ok", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface arg0, int arg1) {
String s = et.getText().toString(); //获取输入框的文字
Toast.makeText(context, s, Toast.LENGTH_SHORT).show();
}});
bd.setNegativeButton("cancel", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(context,"no", Toast.LENGTH_SHORT).show();
}});
bd.show();
}
}
按下no,toast提示no
button2弹出style2的对话框,输入“嗯”
toast提示“嗯”
自定义一个list显示在对话框上:
自定义一个类
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.Toast;
public class MyDialog2 implements DialogInterface.OnClickListener{
Context context;
String[] s;
public MyDialog2(){}
public MyDialog2(final Context context){
this.context = context;
s = new String[]{
"1","2","3","4"
};
AlertDialog.Builder bd = new Builder(context);
bd.setCancelable(false);
bd.setSingleChoiceItems(s, 0, this);
bd.show();
}
public void onClick(DialogInterface arg0, int arg1) {
switch(arg1){
case 0:
Toast.makeText(context, arg1+"", Toast.LENGTH_SHORT).show();
}
}
}
点击之后直接做出反应。未加上确认和取消按钮。
未完待续