鼠标单击事件触发警对话框、列表对话框、单选对话框、复选对话框。除了各个对话框之外,代码里面还涉及了如何将选中的值传回到dialog按钮的点击事件上。
1 在页面先设置4个按钮用来触发各类对话框:
//activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="警告对话框" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表对话框" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选对话框" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="多选对话框" />
</LinearLayout>
2 在活动界面中设置各个按钮的单击事件
2.1 在class MainActivity中先对4个按钮进行声明和定义。
private Button btn,btn1,btn2,btn3;//声明
private DialogInterface.OnClickListener listener;
此外还要对DialogInterface.OnClickListener
进行定义,指的是对话框下面的按钮,共有三种:积极、消极、中立。
代码实现如下:
listener= new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch (which){//摁住ctrl点击可查看
case Dialog.BUTTON_POSITIVE://-1
Toast.makeText(MainActivity.this, "SURE", Toast.LENGTH_LONG).show();
break;
case Dialog.BUTTON_NEGATIVE://-2
Toast.makeText(MainActivity.this, "CANCEL", Toast.LENGTH_LONG).show();
break;
case Dialog.BUTTON_NEUTRAL://-3
Toast.makeText(MainActivity.this, "IGNORE", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
};
2.2 在onCreate函数中对按钮进行定义实例化,也就是将刚刚定义的按钮与xml中的按钮链接起来:
btn=(Button)findViewById(R.id.btn);//定义
btn1=(Button)findViewById(R.id.btn1);
btn2=(Button)findViewById(R.id.btn2);
btn3=(Button)findViewById(R.id.btn3);
2.3 分别对4类对话框设置鼠标点击事件
- 警告对话框
//警告对话框
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//定义对话框对象 必须通过建造者模式
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("警告");//标题
dialog.setMessage("确认删除吗?");//内容
dialog.setIcon(R.drawable.ic_launcher);//图标
//dialog.create();可以省略
dialog.setPositiveButton("是的", listener);
dialog.setNegativeButton("取消", listener);
dialog.setNeutralButton("忽略", listener);
dialog.show();
}
});
效果:
- 列表对话框
//列表对话框单击事件
btn1.setOnClickListener(new OnClickListener() {
//通过字符串数组定义列表内容
private String[] items= new String[]{"冰岛","巴黎","新西兰","马尔代夫"};
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//定义对话框对象 必须通过建造者模式
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("你最想去的地方是?");
dialog.setItems(items,new DialogInterface.OnClickListener() {//匿名类
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你选择的是"+items[which], 0).show();
}
});
dialog.show();
}
});
效果:
- 单选对话框
//单选对话框单击事件
btn2.setOnClickListener(new OnClickListener() {
private String[] items= new String[]{"冰岛","巴黎","新西兰","马尔代夫"};
private Integer index=0;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("你最想去的地方是?");
dialog.setSingleChoiceItems(items,-1, new DialogInterface.OnClickListener() {//匿名类
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//Toast.makeText(MainActivity.this, "you're keen on"+items[which], 0).show();
index=which;
}
});
dialog.setPositiveButton("yes",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你选择的是"+items[index], 0).show();
}
});
dialog.show();
}
});
效果:
(之前所说定义的DialogInterface.OnClickListener 就是这个“yes”选项)
- 多选对话框
//复选对话框单击事件
btn3.setOnClickListener(new OnClickListener() {
private String[] items= new String[]{"冰岛","巴黎","新西兰","马尔代夫"};
private boolean[] checkedItems=new boolean[]{true,false,true,false};
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("你最向往的是?");
dialog.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// TODO Auto-generated method stub
checkedItems[which]=isChecked;//修改多选项选中状态
}
});
dialog.setPositiveButton("yes",new DialogInterface.OnClickListener() {
private String str="";
private Integer i;
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
for(i=0;i<checkedItems.length;i++)
{
if(checkedItems[i])
str=str+items[i]+" ";
}
Toast.makeText(MainActivity.this, "你选择的是"+str, 0).show();
}
});
dialog.show();
}
});
效果: