private int noticeDialogResult=0;
public void showNoticeDialog() {
// 构造对话框
                  noticeDialogResult=0;
AlertDialog.Builder builder = new Builder(mContext);
builder.setTitle(R.string.soft_update_title);
builder.setMessage(mContext.getString(R.string.soft_update_info) + "?\r\n" + mHashMap.get("description"));
// 更新
builder.setPositiveButton(R.string.soft_update_updatebtn, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
noticeDialogResult=1;//这里是确认 dialog.dismiss();
}
});
// 稍后更新
builder.setNegativeButton(R.string.soft_update_later, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
noticeDialogResult=2;//这里是稍后更新
}
});
Dialog noticeDialog = builder.create();
noticeDialog.setCanceledOnTouchOutside(true);
noticeDialog.setOnCancelListener(new OnCancelListener() { @Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
if(noticeDialogResult==1)
                                {//这里为确认
                                }
                                else if(noticeDialogResult==2)
                                {//这里为点击了稍后
                                }
                                else if(noticeDialogResult==0)
                                {//这里为点击了空白处
                                     }
                                }
}
});
noticeDialog.show();
}如标题谢谢

解决方案 »

  1.   

    我觉得可以不用setOnCancelListener这个设置
    点击确认,那就是要更新,直接在这里调用更新的函数
    点击取消,那就是不更新,直接dialog.dismiss();,如果还要做什么,那就调用相应的函数
    不需要标示点击的是哪个,把每个函数独立出来,在需要的地方使用就可以了
    个人建议就不要让用户点击空白区域来取消dialog,让用户必须选择一个,更新或者不更新
      

  2.   

    个人建议就不要让用户点击空白区域来取消dialog,让用户必须选择一个,更新或者不更新 
    ---------------------
    这样不够人性化,因为这个提示更新不更新的,并不是很重要一定要用户选的
    所以应该要让用户可以点击空白取消掉,
    但是我这里因为当这个窗口不显示的时候我要做一些动作,
    就相当于有三种情况的动作,所以要监视到
    谢谢