2011-12-16 122 views
4

我已經收到了崩潰報告與以下日誌內容:是什麼導致這個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,但我非常不確定這一點,特別是因爲我沒有看到的網址是null方式。

我相信該報告來自Galaxy Nexus(在Android 4.0上),如果這有什麼區別,但我不確定。如果不是,它是一個蜂窩設備。

有經驗的人在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); 
+0

在此發佈一些代碼。 – 2011-12-16 23:43:56

+0

完成,謝謝:-) – 2011-12-16 23:46:44

回答

7

這是PluginFullScreenHolder.javasource code for android 4.0

在第84行,您有mWebView.getWebChromeClient(),它根據您的異常返回null(它在第85行使用,沒有空的檢查)。

一種解決方法是設置一個空WebChromeClient(當一些可能影響瀏覽器的用戶界面發生,例如,進度更新和JavaScript警報送到這裏被稱爲):

web.setWebChromeClient(new WebChromeClient()); 

但是,這是真的奇怪,因爲它永遠不應該是空的。

+0

錯誤,是的,這真的很奇怪。這個愚蠢的事情是,我無法測試它是否是固定的,因爲我無法重現錯誤。不過,我會放棄它。 – 2011-12-17 01:21:46

0

我不知道它是否能卜有用的,不知道它,但它似乎是例外與超類有關:

android.app.Dialog 

的方法show()

您可能想看看source code

0

您是否嘗試初始化「網絡」?

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

如果你聲明如下

private WebView web; 

您的變量,您將得到NullpointerExeption,你必須初始化的對象。

相關問題