你的位置:首页 > 操作系统

[操作系统]Android阻止AlertDialog关闭


 1 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 2 builder.setTitle("测试"); 3  4 LayoutInflater inflater = getActivity().getLayoutInflater(); 5 View view = inflater.inflate(R.layout.dialogfragment_num_input, null); 6 builder.setView(view); 7  8 builder.setPositiveButton("确定", 9     new DialogInterface.OnClickListener() {10       @Override11       public void onClick(DialogInterface dialog, int id) {12 13         Field field = null;14 15         try {16           //通过反射获取dialog中的私有属性mShowing17           field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");18           field.setAccessible(true);//设置该属性可以访问19         } catch (Exception ex) {20 21         }22 23         String inputValue = String.valueOf(mEdit.getText());24         if (inputValue == null || "".equals(inputValue)) {25           try {26             //设置dialog不可关闭27             field.set(dialog, false);28             dialog.dismiss();29           } catch (Exception ex) {30           }31         } else {32 33          //34          //做自己的事35          //36           try {37             //关闭38             field.set(dialog, true);39             dialog.dismiss();40           } catch (Exception ex) {41           }42         }43       }44     });45 builder.setNegativeButton("取消",46     new DialogInterface.OnClickListener() {47       @Override48       public void onClick(DialogInterface dialog, int id) {49 50         Field field = null;51 52         try {53           //通过反射获取dialog中的私有属性mShowing54           field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");55           field.setAccessible(true);//设置该属性可以访问56         } catch (Exception ex) {57         }58 59         try {60           field.set(dialog, true);61           dialog.dismiss();62         } catch (Exception ex) {63         }64 65       }66     });67 68 69 builder.create();