简体   繁体   中英

What's causing this NullpointerException?

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.

I don't know if it can bu useful and not sure about it, but it seems like the exception is related to the superclass:

android.app.Dialog

in the method show() .

You might want to take a look to the source code .

Have you tried to initialize "web"?

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

if you declared your variable like this

private WebView web;

You will get the NullpointerExeption, you must initialize the object.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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