AlertDialog
2016-05-22 10:44
495 查看
如果是当前Activity弹出的dialog则不会执行Activity任何生命周期中的方法,Android对话框采用异步方式,因此具有很好的灵活性,然而,如果用惯了主要使用同步对话框的编程框架(如javaScript对话框),那么开发者可能会觉得异步对话框不那么直观。在同步对话框中,对话框之后的代码不会马上执行,而是在对话框消失之后才会执行。这意味着,下一行代码可用于询问所点击的按钮或输入对话框的文本信息。然而,Android对话框是异步的。即使用户没有对对话框操作,只要对话框一显示,下一行代码就会立即执行。应用程序通过实现对话框的回调方法反馈用户与对话框的交互。
此外,这还意味着应用程序能够在代码中清除对话框,这是非常强大的功能。如果应用程序执行某些人物时显示“正在处理”的消息,那么在应用程序完成此任务时,就可以在代码中清除这个对话框。
注意:Dialog类是对话框的基类。对话框虽然可以在界面上显示,但是Dialog不是View类的子类。而是直接继承
java.lang.Object类,Dialog也有自己的生命周期,其生命周期由创建她的Activity进行管理。
对话框常见的形式:
还有自定义对话框。
AlertDialog常用的方法:
代码:
此外,这还意味着应用程序能够在代码中清除对话框,这是非常强大的功能。如果应用程序执行某些人物时显示“正在处理”的消息,那么在应用程序完成此任务时,就可以在代码中清除这个对话框。
注意: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();//显示对话框 } }
相关文章推荐
- hdu1059 Dividing
- SSH学习笔记
- JVM内存管理和垃圾回收
- VirtualBox相关问题总结
- 网络划分子网js算法
- 107. Binary Tree Level Order Traversal II
- 野火底层库的小BUG
- RQNOJ 123 多人背包(背包k优解)
- android中的异步方法AscTask
- MFC创建属性对话框(2)
- Unity3D 小地图的制作
- android文件存储的4种方式
- bzoj 3670: [Noi2014]动物园
- Eclipse使用及调试
- MathJax 支持的 Latex 符号总结(微积分常用符号)
- hdu1158 Employment Planning
- MathJax 支持的 Latex 符号总结(微积分常用符号)
- SQLite数据库
- BZOJ1085 [SCOI2005]骑士精神
- Linux常用快捷键