标签:error error: bind HERE 对话框 变量 log 很多 virtual
1.NoSuchMethodError: No virtual method getBytes(J)[B in class Lcom/huawei/kvdb/KVConnection; or its super classes (declaration of ‘com.huawei.kvdb.KVConnection‘ appears in /system/framework/hwframework.jar)
解决 去除掉PNG合法性检测,在build.gradle里的buildToolsVersion下面添加以下两句: buildTypes { release { minifyEnabled false aaptOptions.setProperty("cruncherEnabled",false) proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.txt‘ } }
2.Unable to add window -- token android.os.BinderProxy@adbfbf8 for displayid = 0 is not valid; is your activity running?
1、错误分析:
从错误信息我们也可以明白其原因,此问题根本原因就是由于将要弹出的dialog所要依附的View已经不存在导致的。
2、什么地方可能照成此问题:当界面销毁后再弹出来;或者界面跳转时我们的view发生改变,dialog依附的context发生变化或者界面未运行了。
此外,很多时候我们需要通过一个非组件类来调用一个view类的方法来弹出dialog或Toast,这样就需要再提供一个静态context来创建这个dialog或者Toast。例如我们在一个view中通过一个静态类来弹出一个对话框:AlertDialog.Builder?builder?=?new?AlertDialog.Builder(mContextNew);当然并不是所有静态context都是可以用来创建dialog的,例如***App().getApplication().getApplicationContext()这个context就不行,因为它并不代表哪一个Activity或者View。。这样就无法add这个dialog。
此view用于绑定显示数据,我们在其构造方法中初始化一个静态变量mContextNew为此view的mContext。这样我们就可以通过一个静态类来弹出对话框了,只需传入这个静态的context(mContextNew)就可以了。。但是这个静态的context如果只在构造方法中初始化的话是会存在问题的,因为如果另起了一个界面其绑定数据的view也是用的这个view那么这个静态context就会被重新修改。。因此当这个新的界面finish后返回到上次的界面,这个静态的context是刚才已经finish的view的context。因此如果仍然传入这个静态变量通过一个静态类来弹出对话框就会出现上述找不到window的错误了。
解决方法:
if(!((Activity) context).isFinishing()) { //show dialog }
标签:error error: bind HERE 对话框 变量 log 很多 virtual
原文地址:https://www.cnblogs.com/wang-jingyuan/p/12174660.html