利用反射控制弹窗dialog能否dismiss消失

来源:互联网 发布:pnp网络摄像机手机端 编辑:程序博客网 时间:2024/06/10 05:56
 这几天在用Dialog这个组件时,在dialog.setPositiveButton中,即便是 return true,弹窗依然消失了
 预期的效果是没有执行dismiss代码就不要dismiss,因此查了很多资料,查到了以下这个方法;
 在return true 的地方替换成 Dialog.setDialogCouldNotDismiss(dialog);

 在 dialog.dismiss()之前添加 Dialog.setDialogCouldDismiss(dialog);


public class DialogUtil {    /**     * function : 设置弹窗点击“确认”和“取消”弹窗可消失     */    public static void setDialogCouldDismiss(Dialog dialog) {        try {            Field field = dialog.getClass().getSuperclass()                    .getDeclaredField("mShowing");            field.setAccessible(true);            field.set(dialog, true);        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * function : 设置弹窗点击“确认”和“取消”弹窗不可消失     */    public static void setDialogCouldNotDismiss(Dialog dialog) {        try {            Field field = dialog.getClass().getSuperclass()                    .getDeclaredField("mShowing");            field.setAccessible(true);            field.set(dialog, false);        } catch (Exception e) {            e.printStackTrace();        }    }}


以上只是我解决问题过程中的一点点个人总结,点滴积累,贵在坚持,感谢你的阅览!


原创粉丝点击