博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android弹出框的学习
阅读量:5239 次
发布时间:2019-06-14

本文共 3546 字,大约阅读时间需要 11 分钟。

Activities提供了一种方便管理的创建、保存、回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的 话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog).

onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Activity为每个对话框的所有者,从而自动管理每个对话 框的状态并挂靠到Activity上。这样,每个对话框继承这个Activity的特定属性。比如,当一个对话框打开时,菜单键显示为这个Activity定义的选项 菜单,音量键修改Activity使用的音频流。

showDialog(int): 当你想要显示一个对话框时,调用showDialog(int id) 方法并传递一个唯一标识这个对话框的整数。当对话框第一次被请求时,Android从你的Activity中调用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。这个回调方法被传以和showDialog(int id)相同的ID。当你创建这个对话框后,在Activity的最后返回这个对象。

onPrepareDialog(int, Dialog):在对话框被显示之前,Android还调用了可选的回调函数onPrepareDialog(int id, Dialog). 如果你想在每一次对话框被打开时改变它的任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用,而onCreateDialog(int) 仅在对话框第 一次打开时被调用。如果你不定义onPrepareDialog(),那么这个对话框将保持和上次打开时一样。这个方法也被传递以对话框的ID,和在onCreate Dialog()中创建的对话框对象。

dismissDialog(int):当你准备关闭对话框时,你可以通过对这个对话框调用dismiss()来消除它。如果需要,你还可以从这个Activity中 调用dismissDialog(int id) 方法,这实际上将为你对这个对话框调用dismiss() 方法。 如果你想使用onCreateDialog(int id) 方法来管理你对话框的状态(就如同在前面的章节讨论的那样),然后每次你的对话框消除的时候,这个对话框 对象的状态将由该Activity保留。如果你决定不再需要这个对象或者清除该状态是重要的,那么你应该调用removeDialog(int id)。这将删除任何内部对象引用而且如果这个对话框正在显示,它将被消除

1 图2效果:改变了对话框的图表,添加了三个按钮 2  3 Dialog dialog = new AlertDialog.Builder(this).setIcon( 4 android.R.drawable.btn_star).setTitle("喜好调查").setMessage( 5 "你喜欢李连杰的电影吗?").setPositiveButton("很喜欢", 6 new OnClickListener() { 7 8 @Override 9 public void onClick(DialogInterface dialog, int which) { 10 // TODO Auto-generated method stub 11 Toast.makeText(Main.this, "我很喜欢他的电影。", 12 Toast.LENGTH_LONG).show(); 13 } 14 }).setNegativeButton("不喜欢", new OnClickListener() { 15 16 @Override 17 public void onClick(DialogInterface dialog, int which) { 18 // TODO Auto-generated method stub 19 Toast.makeText(Main.this, "我不喜欢他的电影。", Toast.LENGTH_LONG) 20 .show(); 21 } 22 }).setNeutralButton("一般", new OnClickListener() { 23 24 @Override 25 public void onClick(DialogInterface dialog, int which) { 26 // TODO Auto-generated method stub 27 Toast.makeText(Main.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG) 28 .show(); 29 } 30 }).create(); 31 32 dialog.show(); 33 34 图3效果:信息内容是一个简单的View类型 35 36 new AlertDialog.Builder(this).setTitle("请输入").setIcon( 37 android.R.drawable.ic_dialog_info).setView( 38 new EditText(this)).setPositiveButton("确定", null) 39 .setNegativeButton("取消", null).show(); 40 图4效果:信息内容是一组单选框 41 42 new AlertDialog.Builder(this).setTitle("复选框").setMultiChoiceItems( 43 new String[] { "Item1", "Item2" }, null, null) 44 .setPositiveButton("确定", null) 45 .setNegativeButton("取消", null).show(); 46 47 图5效果:信息内容是一组多选框 48 49 new AlertDialog.Builder(this).setTitle("单选框").setIcon( 50 android.R.drawable.ic_dialog_info).setSingleChoiceItems( 51 new String[] { "Item1", "Item2" }, 0, 52 new DialogInterface.OnClickListener() { 53 public void onClick(DialogInterface dialog, int which) { 54 dialog.dismiss(); 55 } 56 }).setNegativeButton("取消", null).show(); 57 58 图6效果:信息内容是一组简单列表项 59 60 new AlertDialog.Builder(this).setTitle("列表框").setItems( 61 new String[] { "Item1", "Item2" }, null).setNegativeButton( 62 "确定", null).show(); 63 64 图7效果:信息内容是一个自定义的布局 65 66 1.布局文件 67 68 
69
73
76
78 79
80 81 2.调用代码 82 83 LayoutInflater inflater = getLayoutInflater(); 84 View layout = inflater.inflate(R.layout.dialog, 85 (ViewGroup) findViewById(R.id.dialog)); 86 87 new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout) 88 .setPositiveButton("确定", null) 89 .setNegativeButton("取消", null).show();

 

转载于:https://www.cnblogs.com/zt-zoro/articles/4580795.html

你可能感兴趣的文章
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>