对话框应用反射销毁

  /**
     * 设置对话框是否打开
     * @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();
        }
    }

  

转载于:https://www.cnblogs.com/qcgAd/p/5083316.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值