当前位置:操作系统 > 安卓/Android >>

如何复用AlertDialog

看了很多关于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]
/** 
 * 时间按钮点击事件 
 */ 
btntime.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
        showDialog(TIME_DIALOG); 
    } 
}); 
/** 
 * 重复按钮点击事件 
 */ 
btnrepeat.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
        showDialog(REPEAT_DIALOG); 
    } 
}); 

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


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

[html]
case R.id.contact_batch_del: 
    openDialog(AppData.DIALOG1); 
    break; 
case R.id.contact_batch_star: 
    openDialog(AppData.DIALOG2); 
    break; 

  case R.id.contact_batch_del:
   openDialog(AppData.DIALOG1);
   break;
  case R.id.contact_batch_star:
   openDialog(AppData.DIALOG2);
   break;

 

2、创建dialog

 

[html]
public void openDialog(final int id) { 
    new AlertDialog.Builder(context) 
            .setPositiveButton(R.string.contact_ok, new 
 
            DialogInte易做图ce.OnClickListener() { 
                public void onClick 
 
                (DialogInte易做图ce dialog, int 
 
                whichButton) { 
                    /* 
                     * User 
                     *  
                     * clicked OK so do some stuff 
                     */ 
                    doBatch(id); 
                } 
            }).setNegativeButton(R.string.contact_cancel, new 
 
            DialogInte易做图ce.OnClickListener() { 
                public void onClick 
 
                (DialogInte易做图ce dialog, int 
 
                whichButton) { 
                    /* 
                     * User 
                     *  
                     * clicked Cancel so do some stuff 
                     */ 
 
                    dialog.dismiss(); 
                } 
       

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,