您的位置:首页 > 其它

AlertDialog 点击按钮后让dialog 不消失

2016-05-04 14:58 387 查看
现在有个需求是在 AlertDialog中点击确认后,发现AlertDialog中的某个输入框的内容为空,需要提示用户,填写后再调用确认后的操作,但是在点击确认后,AlertDialog就消失了,所以需要稍微修改下,让点击后校验不通过时,不让AlertDialog 消失。

代码如下:

核心代码

try {
Field field = dialogInterface.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialogInterface, false);    //要消失时把false 改成true,在确认按钮中加如此代码后,取消按钮也得加,否则取消时不会消失
dialogInterface.dismiss();
} catch (Exception e) {
e.printStackTrace();
}


完整代码如下:

new AlertDialog.Builder(mContext).setTitle("拒绝取消理由")
.setView(reason)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(reason.getText().toString().trim().isEmpty()){
UHelper.showToast(mContext,"请输入拒绝的理由!");
try {

Field field = dialogInterface.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialogInterface, false);
dialogInterface.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
}else{
clickCancelRefuse(bean, reason.getText().toString().trim());
}

}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
try {

Field field = dialogInterface.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialogInterface, true);
dialogInterface.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
dialogInterface.dismiss();
}
})
.show();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: