您的位置:首页 > 其它

AlertDialog

2016-05-22 10:44 495 查看
       如果是当前Activity弹出的dialog则不会执行Activity任何生命周期中的方法,Android对话框采用异步方式,因此具有很好的灵活性,然而,如果用惯了主要使用同步对话框的编程框架(如javaScript对话框),那么开发者可能会觉得异步对话框不那么直观。在同步对话框中,对话框之后的代码不会马上执行,而是在对话框消失之后才会执行。这意味着,下一行代码可用于询问所点击的按钮或输入对话框的文本信息。然而,Android对话框是异步的。即使用户没有对对话框操作,只要对话框一显示,下一行代码就会立即执行。应用程序通过实现对话框的回调方法反馈用户与对话框的交互。

         此外,这还意味着应用程序能够在代码中清除对话框,这是非常强大的功能。如果应用程序执行某些人物时显示“正在处理”的消息,那么在应用程序完成此任务时,就可以在代码中清除这个对话框。

        注意:Dialog类是对话框的基类。对话框虽然可以在界面上显示,但是Dialog不是View类的子类。而是直接继承

java.lang.Object类,Dialog也有自己的生命周期,其生命周期由创建她的Activity进行管理。

        对话框常见的形式:



还有自定义对话框。

AlertDialog常用的方法:



代码:

package com.example.alertdialog;

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

public class MainActivity extends Activity {

String [] single_list = {"男","女","女博士","程序员"};
String [] multi_list = {"篮球","足球","男生","女生"};
String [] item_list = {"项目经理","策划","测试","美工","程序猿"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initEvent();
}
/**
* 初始化点击事件
*/

private void initEvent() {
// TODO Auto-generated method stub
findViewById(R.id.dialog_btn1).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog1();
}

});
findViewById(R.id.dialog_btn2).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog2();
}
});
findViewById(R.id.dialog_btn3).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog3();
}
});
findViewById(R.id.dialog_btn4).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog4();
}
});
findViewById(R.id.dialog_btn5).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog5();
}
});
}

/**
* 显示确认对话框
*/
protected void showDialog1() {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("确认对话框"); //设置标题
builder.setIcon(R.drawable.ic_launcher);//设置图标
builder.setMessage("确认对话框提示内容"); //设置内容
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "点击了确定按钮!",
Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "点击了取消按钮!",
Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
/**
* 显示单选按钮对话框
*/
protected void showDialog2() {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择性别");
builder.setIcon(R.drawable.ic_launcher);
//第一个参数为待选项数组, 第二个参数为默认选中选项所在数组的下标, 为该Dialog内的所有选项设置事件监听器
builder.setSingleChoiceItems(single_list, 0, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String str = single_list[which];
Toast.makeText(MainActivity.this, "这个人是" + str + "!",
Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();//获取dialog
dialog.show();//显示对话框
}
/**
* 显示多选按钮对话框
*/
protected void showDialog3() {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("爱好");
builder.setIcon(R.drawable.ic_launcher);
builder.setMultiChoiceItems(multi_list, null, new DialogInterface.OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked) {
Toast.makeText(MainActivity.this, "我喜欢上了"+multi_list[which], Toast.LENGTH_LONG).show();
}else {
Toast.makeText(MainActivity.this, "我不喜欢"+multi_list[which], Toast.LENGTH_LONG).show();
}
}
});

AlertDialog dialog = builder.create();
dialog.show();
}
/**
* 显示列表对话框
*/
protected void showDialog4() {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("部门列表");//显示标题
builder.setIcon(R.drawable.ic_launcher);//设置图标
builder.setItems(item_list, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, item_list[which], Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
/**
* 显示自定义对话框
*/
protected void showDialog5() {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.dialog_layout, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("自定义对话框");//设置标题
builder.setIcon(R.drawable.ic_launcher);//设置图标
builder.setView(view);
AlertDialog dialog = builder.create();//获取dialog
dialog.show();//显示对话框
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: