是什么造成这个NullPointerException异常? [英] What's causing this NullpointerException?

查看:186
本文介绍了是什么造成这个NullPointerException异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到与以下日志内容的崩溃报告:

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

我曾尝试在网络上搜索 PluginFullScreenHolder ,但行85看起来是我发现的类注释。

我猜崩溃相关的的WebView - 可能是因为我试图加载 ,但我非常不确定这一点,特别是因为我没有看到的网址是一种方式

我相信,该报告来自Galaxy Nexus的(在Android 4.0),如果让任何区别,但我不知道。如果不是,它是一个蜂窝设备。

任何人只要有经验,在 PluginFullScreenHolder

这里是我的code

 网​​页=(的WebView)findViewById(R.id.webView1);
web.setBackgroundColor(android.R.color.black);
web.getSettings()setJavaScriptEnabled(真)。
web.getSettings()setPluginsEnabled(真)。
web.getSettings()setUserAgent(1)。
。web.getSettings()setSupportZoom(假);
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))。

奇怪的是,从市场崩溃报告没有提及任何关于我的code什么 - 什么让曾经的东西 - 你在上面看完整的日志。这是PluginFullScreenHolder.java,毫无疑问。

编辑2:

找到正确的类:<一href=\"http://grep$c$c.com/file/repository.grep$c$c.com/java/ext/com.google.android/android/4.0.1_r1/android/webkit/PluginFullScreenHolder.java#PluginFullScreenHolder.show%28%29\" rel=\"nofollow\">http://grep$c$c.com/file/repository.grep$c$c.com/java/ext/com.google.android/android/4.0.1_r1/android/webkit/PluginFullScreenHolder.java#PluginFullScreenHolder.show%28%29

有问题的行是:

  client.onShowCustomView(mLayout,mOrientation,mCallback);


解决方案

下面是 PluginFullScreenHolder.java source code为Android 4.0的

目前线路84,你有 mWebView.getWebChromeClient()根据您的异常(它是在85线没有使用空检查)。它返回null

一个解决方法是设置一个空WebChromeClient(这就是所谓的东西时,可能会影响浏览器的用户界面发生,例如,进度更新和JavaScript警报送到这里):

  web.setWebChromeClient(新WebChromeClient());

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

I've received a crash report with the following log content:

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)

I have tried searching for PluginFullScreenHolder across the web, but line 85 appears to be a comment in the classes I've found.

I'm guessing the crash is related to a WebView - possibly because I'm trying to load null, but I'm very unsure of this, especially because I don't see a way for the URL to be null.

I believe the report comes from a Galaxy Nexus (on Android 4.0), if that makes any difference, but I'm not sure. If not, it's a Honeycomb device.

Anyone with experience in PluginFullScreenHolder?

Here's my code

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"));

The weird thing is that the crash report from Market doesn't mention anything about my code - nothing what so ever - you're looking at the complete log above. It's PluginFullScreenHolder.java, no doubt.

Edit 2:

Found the correct class: 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

The line in question is:

client.onShowCustomView(mLayout, mOrientation, mCallback);

解决方案

Here is the PluginFullScreenHolder.java source code for android 4.0.

At line 84, you have mWebView.getWebChromeClient() which returns null according to your exception (it is used at line 85 without null check).

A workaround is to set an empty WebChromeClient (which is called when something that might impact a browser UI happens, for instance, progress updates and JavaScript alerts are sent here) :

web.setWebChromeClient(new WebChromeClient());

But this is really strange because it should never be null.

这篇关于是什么造成这个NullPointerException异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆