現在有個需求是在 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();