当前位置:  开发笔记 > 编程语言 > 正文

在NPObject上调用方法时出错!在Android 2.2中

如何解决《在NPObject上调用方法时出错!在Android2.2中》经验,为你挑选了3个好方法。

我在我的Android应用程序中使用addJavascriptInterface来允许JavaScript调用我在本机Java应用程序中创建的函数.

这在Android 2.1中运行良好,但是在Android 2.2中我收到错误消息"错误调用NPObject上的方法!"

当我调用方法调用时,调用本机方法的内部,但异常是在JavaScript中抛出.



1> muffs..:

我收到了这个确切的错误:

Uncaught Error: Error calling method on NPObject!

结果我试图从webview调用JavascriptInterface函数,如下所示:

AndroidJS.populateField(field);

而在Java方面,该函数不接受参数:

public void populateField() {}

简单地允许Java函数接受参数为我解决了这个错误.

例如, public void populateField(String field) {}

这可能不是,也可能不是,这个错误可能抛出的唯一原因.这就是我如何解决我的具体情况.希望这可以帮助!:)



2> NikoRoberts..:

根据我的经验,这个问题是由Javascript接口带回Javascript不能自动识别的对象引起的.

在Android中,这是由布尔等包装器引起的,与它们的本机版本booleanlong相比.

//This will fail
public Long getmyLongVal() {
    return 123456789;
}

//This will work
public long getMyNativeLongVal() {
    return 123456789;
}

因此,如果要避免NPObject错误,请将您的包装类移除到Javascript使用的任何方法.



3> RRTW..:

好的,我也有同样的问题,就在今天.

我所做的是将代码放在UI线程中,如下面的代码:

/**
 * ???Javascript???method
 * Method for Javascript in HTML
 * @param java.lang.String - Playlist ID
 */
public int callListByPID(final String pId)
{
  Log.i(Constants.TAG, "PAD Playlist ID from HTML: "+pId);

  runOnUiThread(new Runnable()
  {
    public void run()
    {
      // Put your code here...
    }
  });

  return 1;
}

这解决了我的问题,并希望它可以帮助一些身体...... :-)

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有