Android 动态改变对话框值

  Android Dev-Guide 推荐重写Activity.onCreateDialog()方法来创建Dialog,这样Dialog就归属于这个Activity了。

使用方法是这样的,Activity.showDialog()激发Activity.onCreateDialog()创建Dialog,然后显示之,便于多个Dialog的统一管理。

注意,以后再用Activity.showDialog()显示同一个Dialog时,则不会调用Activity.onCreateDialog(),

而是调用Activity.onPrepareDialog(),使用上一次显示Dialog时的状态。即

     第一次:showDialog() -> onCreatedialog()
       以后: showDialog() -> onPrepareDialog()

在用oncreatedialog回调创建dialogd时候,系统会缓存dialog,下次直接就显示上次显示的内容。

  当一个Dialog第一次被调用的时候,Android系统会调用你应该实例化Dialog的Activity的onCreateDialog方法,

这个方法会启动你从showDialog(int)方法里面传递的那个ID参数所定义的Dialog,当你创建成功后,在方法的最后回返回这个Dialog。

     在Dialog显示之前,Android也会调用回调函数onPripareDialog(int,Dialog),当你想在这个Dialog每次打开的时候一些属性得到改变,你可以定义这个方法,

这个方法会在每次Dialog打开的时候被调用,onCreateDialog()只会在Dialog第一次打开的时候被调用,如果你没有定义onPrepareDialog(),

每次返回的Dialog都是和第一次显示的Dialog一样,这个方法需要传递一个ID和在onCreateDialog()方法中创建的Dialog。

      最好的定义onCreateDialog()和onPrepareDialog()中使用switch对传入的id进行下判断,每一个case对应着要启动的Dialog的ID

 1  * 动态改变对话框值
 2  * 关键点:onPrepareDialog方法 里面调用 removeDialog(id);
 3  * 对话框调用执行顺序 showDialog() -> onCreateDialog() -> onPrepareDialog() -> removeDialog()
 4 
 5  @Override
 6     public void onPrepareDialog(int id, Dialog dialog) {
 7         switch (id) {
 8         case (DIALOG_SORT_MAILS):
 9             removeDialog(id);  //移出掉onCreateDialog()创建的Dialog
10             break;
11         }
12     }

 

转载于:https://www.cnblogs.com/yiscat/archive/2013/04/24/3041384.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值