在Fragment内设置控件状态时,报JNI DETECTED ERROR IN APPLICATION: can't call void android.view.View.setElevation(float) on null obj错误,并且有一串超长的异常。
百度到的答案都是说因为布局嵌套AppBarLayout 引起的,在布局文件中加入:android:stateListAnimator="@null"就可以了,但我并没有使用AppBarLayout 。
再次检查代码时,发现我是在独立的线程中设置控件状态,实际上是跨线程调用控件了,以往也经常犯这种错误,但是在Activity中,会抛出CalledFromWrongThreadException异常,把设置状态的代码放在runOnUiThread中就可以了。
这段异常是android自动生成的底部导航栏关联的Fragment中出现的,报的异常和Activity中不一样,解决的方式倒是一样的。
activity!!.runOnUiThread {
buttonDevice.isEnabled = false
}
本文探讨了在Fragment中跨线程设置控件状态时遇到的JNIDETECTEDERRORINAPPLICATION异常,详细解释了该错误的原因及解决办法。不同于Activity中的CalledFromWrongThreadException,此异常需通过runOnUiThread方法进行修正。
1044

被折叠的 条评论
为什么被折叠?



