我NullPointerException
在 Android 2.3.4 中接到以下电话:
java.lang.NullPointerException
at android.webkit.WebView.addPackageNames(WebView.java:4063)
at com.my.company.MyClass$MyInnerClass.myMethod(MyClass.java:283)
at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
at android.webkit.BrowserFrame.loadUrl(BrowserFrame.java:246)
at android.webkit.WebViewCore.loadUrl(WebViewCore.java:1981)
at android.webkit.WebViewCore.access$1400(WebViewCore.java:53)
at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1122)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:674)
at java.lang.Thread.run(Thread.java:1019)
MyClass$MyInnerClass 添加到 JavaScript 界面
class MyClass {
// ...
myWebView.addJavascriptInterface(new MyInnerClass(), "MyInnerClass");
// ...
public void myOuterMethod(int param1, int param2) {
// Notify a listener that myOuterMethod was called
}
private class MyInnerClass {
public void myMethod(int param1, int param2) {
myOuterMethod(param1, param2);
}
}
}
因此,JavaScript 调用MyInnerClass.myMethod(-1, -1)
似乎可以很好地通过 Java-JavaScript 桥接,但addPackageNames
调用失败,这不是我的代码。
我查看了android.webkit.WebView
GrepCode 中的课程,但我无法弄清楚我是如何造成这种情况的。唯一的一行addPackageNames
是
public void addPackageNames(Set<String> packageNames) {
mWebViewCore.sendMessage(EventHub.ADD_PACKAGE_NAMES, packageNames);
}
所以,我得出的结论是mWebViewCore
or EventHub
is null
。
任何Android专家都可以对此有所了解吗?这是一个已知的错误?这是我造成的吗?如果是这样,怎么做?如果没有,我该如何防止这种情况?