桥接:JS调用安卓方法报错Uncaught Error: Error calling method on NPObject

说一说自己粗心踩到的一个不算坑的坑:

项目是安卓webview嵌入SPA单页应用页面,涉及到JS调用原生安卓方法,但就是在调用安卓方法时死活一直报错xxx  NPObject一堆错误。
写了一个测试页面,调用一点问题没有,这也让安卓开发头疼不已,这破问题查了一两个小时,最终还是出在前端。

问题原因:
JS调用安卓方法多传了一个undefined参数,本来这在JS中是一个小问题,但在桥接中就成了一个大问题了。
JS调用JS方法一般这么写:

function a () {};

function b (o) {
  // 方式一
  a();
  // 方式二
  a(o);
};

上面两种方式调用方法a其实没多大区别,这取决于a方法要不要传参!!

但是如果a方法是安卓定义的桥接方法,并且桥接方法不接收传参,那么方式二调用就会报错xxx  NPObject!!!

 

作为一个小前端,没经历过java的严格类型语言洗礼,真的不知道同一个方法名,传参和不传参在java中是两个方法。再次为自己的蠢,哭了...

 

posted @ 2018-02-12 08:50  极·简  Views(3168)  Comments(0Edit  收藏  举报