分享到:

西安雁塔兆隆计算机培训中心西安软件开发,西安java培训,全国领先的软件开发培训

联系资料

西安雁塔兆隆计算机培训中心
所在地区:
陕西省 西安市
公司主页:
暂无
电话号码:
029-*******
传真号码:
暂无
联 系 人:
王老师
移动电话:
1592*******
电子邮箱:
暂无

北大青鸟西安兆隆:如何复用AlertDialog

发布于 2013年01月07日

[摘要]看了很多关于AlertDialog的文章,很少提起复用的问题 一般情况下整齐一点的调用只有下面这样: 1、定义final标志 [html] final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG =

看了很多关于AlertDialog的文章,很少提起复用的问题
一般情况下整齐一点的调用只有下面这样:

1、定义final标志


[html]
final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG = 3, 
                DATE_DIALOG2 = 4; 

 final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG = 3,
     DATE_DIALOG2 = 4;
2、准备生成Dialog方法


[html]
/** 
     * 创建对话框 
     */ 
    @Override 
    public Dialog onCreateDialog(int id) { 
        Dialog dialog = null; 
        switch (id) { 
        /** 
         * 开始 
         */ 
        case TIME_DIALOG: 
            //处理逻辑 
            break; 
        default: 
            break; 
        } 
        return dialog; 
    } 

/**
  * 创建对话框
  */
 @Override
 public Dialog onCreateDialog(int id) {
  Dialog dialog = null;
  switch (id) {
  /**
   * 开始
   */
  case TIME_DIALOG:
   //处理逻辑
   break;
  default:
   break;
  }
  return dialog;
 }
2、在方法中调用

 

[html]
/** 
 * 时间按钮点击事件 
 */ 
***lickListener(new ***kListener() { 
    @Override 
    public void onClick(View v) { 
        showDialog(TIME_DIALOG); 
    } 
}); 
/** 
 * 重复按钮点击事件 
 */ 
***lickListener(new ***kListener() { 
    @Override 
    public void onClick(View v) { 
        showDialog(REPEAT_DIALOG); 
    } 
}); 

    /**
     * 时间按钮点击事件
     */
    ***lickListener(new ***kListener() {
     @Override
     public void onClick(View v) {
      showDialog(TIME_DIALOG);
     }
    });
    /**
     * 重复按钮点击事件
     */
    ***lickListener(new ***kListener() {
     @Override
     public void onClick(View v) {
      showDialog(REPEAT_DIALOG);
     }
    });


但实际上,这样仍然需要创建多个dialog,不能实现dialog的复用在下经常长时间研究,终于想出如下办法:
1、调用创建方法

[html]
case ***t_batch_del: 
    openDialog(***1); 
    break; 
case ***t_batch_star: 
    openDialog(***2); 
    break; 

  case ***t_batch_del:
   openDialog(***1);
   break;
  case ***t_batch_star:
   openDialog(***2);
   break;

 

2、创建dialog

 

[html]
public void openDialog(final int id) { 
    new ***r(context) 
            .setPositiveButton(***t_ok, new 
 
            ***kListener() { 
                public void onClick 
 
                (DialogInterface dialog, int 
 
                whichButton) { 
                    /* 
                     * User 
                     *  
                     * clicked OK so do some stuff 
                     */ 
                    doBatch(id); 
                } 
            }).setNegativeButton(***t_cancel, new 
 
            ***kListener() { 
                public void onClick 
 
                (DialogInterface dialog, int 
 
                whichButton) { 
                    /* 
                     * User 
                     *  
                     * clicked Cancel so do some stuff 
                     */ 
 
                    ***s(); 
                } 
            }).create().show(); 

 public void openDialog(final int id) {
  new ***r(context)
    .setPositiveButton(***t_ok, new

    ***kListener() {
     public void onClick

     (DialogInterface dialog, int

     whichButton) {
      /*
       * User
       *
       * clicked OK so do some stuff
       */
      doBatch(id);
     }
    }).setNegativeButton(***t_cancel, new

    ***kListener() {
     public void onClick

     (DialogInterface dialog, int

     whichButton) {
      /*
       * User
       *
       * clicked Cancel so do some stuff
       */

      ***s();
     }
    }).create().show();
 }

 

3、执行内部方法

 

[html]
public void doBatch(int id) { 
            switch (id) { 
            case ***1: 
                int count = ***tactList(chosenList); 
                ***ast(context, "有" + count + "个联系人被处理!"); 
                break; 
            case ***2: 
                count = ***ntactList(chosenList); 
                ***ast(context, "有" + count + "个联系人被处理!"); 
                break; 
            default: 
                break; 
            } 
        } 

 public void doBatch(int id) {
    switch (id) {
    case ***1:
     int count = ***tactList(chosenList);
     ***ast(context, "有" + count + "个联系人被处理!");
     break;
    case ***2:
     count = ***ntactList(chosenList);
     ***ast(context, "有" + count + "个联系人被处理!");
     break;
    default:
     break;
    }
   }

 

如此以来,大功告成!
本人特别喜欢整齐而又简单的代码,复用性强。

本博出自博主手书,转载请说明出处,以规避法律责任!谢谢合作!

(责任编辑:)