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();
原标题:Android阻止AlertDialog关闭
关键词:Android