AlertDialog 點擊按鈕後讓dialog 不消失

現在有個需求是在 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();
發佈了45 篇原創文章 · 獲贊 36 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章