繁体   English   中英

是什么导致了这个NullpointerException?

[英]What's causing this NullpointerException?

我收到了一份包含以下日志内容的崩溃报告:

java.lang.NullPointerException
at android.webkit.PluginFullScreenHolder.show(PluginFullScreenHolder.java:85)
at android.webkit.WebView$PrivateHandler.handleMessage(WebView.java:8553)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

我尝试在网上搜索PluginFullScreenHolder ,但第85行似乎是我发现的类中的注释。

我猜测崩溃与WebView - 可能是因为我正在尝试加载null ,但我对此非常不确定,特别是因为我没有看到URL为null

我认为该报告来自Galaxy Nexus(在Android 4.0上),如果这有任何区别,但我不确定。 如果没有,那就是Honeycomb设备。

PluginFullScreenHolder经验的PluginFullScreenHolder吗?

这是我的代码

web = (WebView) findViewById(R.id.webView1);
web.setBackgroundColor(android.R.color.black);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setPluginsEnabled(true);
web.getSettings().setUserAgent(1);
web.getSettings().setSupportZoom(false);
web.loadUrl("http://www.justin.tv/widgets/live_embed_player.swf?auto_play=true&fullscreen=true&start_volume=100&hostname=www.justin.tv&channel=" + this.getIntent().getExtras().getString("channelName"));

奇怪的是,市场的崩溃报告没有提到任何关于我的代码的事情 - 没有什么事情 - 你正在查看上面的完整日志。 毫无疑问,它是PluginFullScreenHolder.java。

编辑2:

找到了正确的类: http//grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/webkit/PluginFullScreenHolder.java#PluginFullScreenHolder.show%28 %29

有问题的一行是:

client.onShowCustomView(mLayout, mOrientation, mCallback);

这是android 4.0PluginFullScreenHolder.java 源代码

在第84行,您有mWebView.getWebChromeClient() ,它根据您的异常返回null(它在第85行使用,没有空检查)。

解决方法是设置一个空的WebChromeClient(当可能影响浏览器UI的事件发生时调用,例如,在此处发送进度更新和JavaScript警报):

web.setWebChromeClient(new WebChromeClient());

但这真的很奇怪,因为它永远不应该是空的。

我不知道它是否可以有用而且不确定它,但似乎异常与超类有关:

android.app.Dialog

在方法show()

您可能想查看源代码

你试过初始化“网络”吗?

WebView web = new WebView(this);
web = (WebView) findViewById(R.id.webView1);

如果你这样声明你的变量

private WebView web;

您将获得NullpointerExeption,您必须初始化该对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM