AlertDialog的onCreateDialog与onPrepareDialog用法
场景:在一个Activity中多次使用弹出对话框。而且对话框携带着动态变化的信息数据,这时假设仅仅使用onCreateDialog(int id, Bundle bundle)回调,则会发现第一次以后的对话框携带的数据并没有更新。这是由于该回调仅仅被使用了一次,之后的每次使用的bundle都是第一次的bundle,数据并没有更新。
所以须要配合onPrepareDialog(int id, Dialog dialog, Bundle bundle)使用。
Android的AlertDialog生成顺序,调用 showDialog(id, bundle),首先回调onCreateDialog(int id, Bundle bundle)。该方法仅仅生成一次,然后之后再点击,就会回调onPrepareDialog(int id, Dialog dialog, Bundle bundle)。
onCreateDialog(int id, Bundle bundle)生成对话框非常easy理解。依据不一样的id,生成不一样的对话框。详见
http://blog.csdn.net/zpf8861/article/details/31423049
这里不再详述。
在onPrepareDialog(int id, Dialog dialog, Bundle bundle)中,id是生成哪种对话框的标识,取决于showDialog(id, bundle)。bundle是随时更新的保存新数据的bundle,bundle携带数据的方法。简单数据或者对象的方法在
http://blog.csdn.net/zpf8861/article/details/31730651
中具体介绍,这里不详述。
dialog是第一次调用onCreateDialog返回的Dialog对象。以下是一段实际代码,关键实现的几个地方在取出bundle,调用setButton等方法又一次实现对话框相关方法等。
protected void onPrepareDialog(int id, Dialog dialog, Bundle bundle) {
final Info info = (Info) bundle.getSerializable("info");
final AlertDialog syncDialog = (AlertDialog) dialog;
switch (id) {
case DIALOG_INSTALL:
syncDialog.setTitle(getString(R.string.dialog_download_dis, label, size));
syncDialog.setButton(AlertDialog.BUTTON_POSITIVE,
getString(R.string.dialog_download), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
syncDialog.setButton(AlertDialog.BUTTON_NEGATIVE,
getString(R.string.dialog_cancel), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
break;
case DIALOG_UPDATE:
syncDialog.setTitle(getString(R.string.dialog_update_dis, label, size));
syncDialog.setButton(AlertDialog.BUTTON_POSITIVE,
getString(R.string.dialog_update), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
syncDialog.setButton(AlertDialog.BUTTON_NEUTRAL,
getString(R.string.dialog_uninstall), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mLanguagePackUpdateManager.unInstall(info);
syncDialog.dismiss();
}
});
syncDialog.setButton(AlertDialog.BUTTON_NEGATIVE,
getString(R.string.dialog_cancel), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
break;
case DIALOG_UNINSTALL:
syncDialog.setTitle(getString(R.string.dialog_uninstall_dis, label, size));
syncDialog.setButton(AlertDialog.BUTTON_POSITIVE,
getString(R.string.dialog_uninstall), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
syncDialog.setButton(AlertDialog.BUTTON_NEGATIVE,
getString(R.string.dialog_cancel), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
break;
default:
break;
}
}
AlertDialog的onCreateDialog与onPrepareDialog用法的更多相关文章
- AlertDialog.Builder对话框类的用法
1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...
- 【转】Android动态改变对 onCreateDialog话框值 -- 不错不错!!!
原文网址:http://www.111cn.net/sj/android/46484.htm 使用方法是这样的,Activity.showDialog()激发Activity.onCreateDial ...
- Android 对话框用法
来自:http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html Activities提供了一种方便管理的创建.保存.回复的对话框机制,例 ...
- 【起航计划 020】2015 起航计划 Android APIDemo的魔鬼步伐 19 App->Dialog Dialog样式
这个例子的主Activity定义在AlertDialogSamples.java 主要用来介绍类AlertDialog的用法,AlertDialog提供的功能是多样的: 显示消息给用户,并可提供一到三 ...
- Android 对话框(Dialog)大全 建立你自己的对话框
Android 对话框(Dialog)大全 建立你自己的对话框 原文地址: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html A ...
- Dialog类介绍
Dialog类实现为一个简单的漂浮窗口,完全在Activity中创建.使用基本的Dialog类,你可以创建一个新的实例并设定标题和布局,如下所示: Dialog d = new Dialog(MyAc ...
- 转 Android 对话框(Dialog)大全 建立你自己的对话框
Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...
- Android 对话框(Dialog)大全
转自: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html Activities提供了一种方便管理的创建.保存.回复的对话框机制, ...
- Android 对话框(Dialog)
Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...
随机推荐
- 学习《Python金融实战》中文版PDF+英文版PDF+源代码
学习python处理金融数据,建议学习<Python金融实战>,比较实用,只不过Yahoo财经的API改了,书里的方法不再有效要改一改,还有就是会有一些代码缩进小问题,总体上对金融分析很实 ...
- 洛谷 P2614 计算器弹琴
P2614 计算器弹琴 题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参看洛谷P2549) 小A发现了一个计算器的另一个隐藏功能——弹琴. http://www.bilib ...
- ExtAspNet依据Grid导出Excel
protected void Button1_Click(object sender, EventArgs e) { Response.ClearContent(); Response.AddHead ...
- ajax动态更新下拉列表
前面做了一个ajax的小demo,今天看一个动态更新下拉列表,或者也叫级联更新下拉列表,这个也是利用ajax的异步调用去后台实现数据请求.然后回到前台完毕下拉列表数据的更新,以增强web应用的交互性. ...
- Cocos2dx 小技巧(十二) 一种可行的系列动画播放方式
今早发生了一件事让我感觉特气愤!去年的这个时候,我和小伙伴们一起在操场上拍毕业照,之后有个当地报纸的记者来我们学校取材,看到我们后打算给我们拍几张创意张扬点的毕业照.之后呢,照片出来了,拍的效果大伙都 ...
- jQuery Easy UI ProgressBar(进度条)组件
ProgressBar(进度条)组件,这个还是挺好玩的.我们在自己做点什么的时候常常能用到,比方上传下载文件.导入导出文档啊.加载网页等等. 应用场景非常多,使用起来还非常easy. 演示样例: &l ...
- 酉矩阵(unitary matrix)
复方阵 U 称为酉矩阵,如果满足: U∗U=UU∗=I 换句话说,矩阵 U 的共轭转置 U∗ 就是 U 的逆矩阵. U∗=U−1 1. unitary matrix 保持内积不变 ⟨Ux,Uy⟩=⟨x ...
- 慢慢人生路,学点Jakarta基础-深入剖析Java的接口和抽象类
在java面向对象编程的,抽象类和接口始终存在有疑问的地方,因为两者太多相似有太多不同,在刚开始学习的时候经常弄的不对,使用情景搞混,今天来总结之前学习Java中接口和抽象类的问题. 抽象类 了解:只 ...
- call() 和 apply() 的作用和区别
call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就 ...
- sqlserver 小计合计总计
SELECT CASE WHEN GROUPING(F1) = 1 THEN '总计'WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 1 THEN F1+'合计'W ...