/** * 设置对话框是否打开 * @param dialog 对话框 * @param isOpened true:对话框开着,false:对话框关闭 */ private void dialogIsOpened(DialogInterface dialog, boolean isOpened) { Class clzDialog=dialog.getClass(); //clzDialog=class android.app.AlertDialog System.out.println("clzDialog=" + clzDialog); Class clsSuperDialog=clzDialog.getSuperclass(); System.out.println("clsSuperDialog="+clsSuperDialog); try { //得到Dialog类中的成员变量 private boolean mShowing = false;对应的Field类型的对象 //如果mShowing=true则对话框可以关闭,false:表示对话框不可以关闭 Field field_mShowing=clsSuperDialog.getDeclaredField("mShowing"); //是否取消java语法检查,true:是,false: 否 field_mShowing.setAccessible(true); //给mShowing赋值 field_mShowing.set(dialog,isOpened); //正常的赋值:dialog.mShowing=isOpened; //通过反射的赋值方式为:mShowing.set(dialog,isOpened); } catch (Exception e) { e.printStackTrace(); } }