码迷,mamicode.com
首页 > 其他好文 > 详细

对话框应用反射销毁

时间:2015-12-28 18:16:08      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

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

  

对话框应用反射销毁

标签:

原文地址:http://www.cnblogs.com/qcgAd/p/5083316.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!