Uncaught Error: Error calling method on NPObject.
16lz
2021-01-23
最近弄android与JS交互遇到一个奇怪的问题。首先了解一下具体的场景。
一个Activity中有一个WebView,然后有一个Android原生Button,默认Button是不可用状态,WebView要展示的东西是可以上下滑动的,当WebView中内容滑动到底部JS会回调Android的一个方法。我在这个方法中将Button设为可用状态。
@JavascriptInterfacepublic void readed() { button.setEnabled(true);}
实际情况是JS已经调用了readed方法,但是Button的状态却未体现出来,并且只有点击Button一下,Button才会显示为可用状态。百思不得其解啊。很久之后注意到日志中有这么一个异常信息:
Uncaught Error: Error calling method on NPObject.
最后查找了一些资料,没有太好的解释,但是使用下面的方式进行处理可以达到想要的效果,这里给出代码,稍后有时间探索一下具体的原理:
Handler mHandler = new Handler();@JavascriptInterfacepublic void readed() { mHandler.post(new Runnale(){ public void run(){ button.setEnabled(true); } });}
使用上面的代码就可以解决类似的问题了。
大概的原因可能是JS调用的readed方法不是主线程,所以更新UI会出现此类异常情况。
这里只是猜测,如果哪位童鞋知道具体原因欢迎留言指导。
更多相关文章
- Handle详解和使用方法
- Android下引用系统库的方法及问题
- 关于Zipalign的介绍和使用方法
- Android测试方法总结
- Android下生成core dump的方法
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用
- Android中控件的显示和隐藏以及EditText的可编辑和不可编辑状态
- ubuntu下eclipse Android ADT中SDK Manager中安装SDK失败的方法