2011-12-16 6 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に関連している推測している - 私はURLがnullなるための方法が表示されていない、特にので、私はnullをロードしようとしているが、私はこれを非常に不確かだから、おそらく。

私はそれが何の違いを行う場合の報告は、(アンドロイド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

ここにコードの一部を投稿してください。 –

+0

完了、ありがとう:-) –

答えて

7

PluginFullScreenHolder.javasource code for android 4.0です。ライン84で

、あなたは(それがnullチェックせずにライン85で使用されている)あなたの例外に応じてnullを返しますmWebView.getWebChromeClient()を持っています。

この問題を回避するには、空のWebChromeClient(アップデートとJavaScriptのアラートを進行、例えば、UIが起こるのブラウザに影響を与えるかもしれない何かがここに送られたときに呼び出される)を設定することです:

web.setWebChromeClient(new WebChromeClient()); 

をしかし、これは実際にありますそれは決してnullであってはならないので奇妙です。

+0

ええ、それは本当に奇妙ですね。これについての愚かなことは、私がエラーを再現できないので修正されているかどうかをテストできないことです。私はそれを行くだろう、しかし。 –

+2

この固定は私のために働いた、それは私がwebviewで読み込んでいたWebページによって引き起こされたフルスクリーンには、アプリケーションをクラッシュさせるために使用される 'フルスクリーン'をクリックしていくつかの機能を持っていた。 – scottyab

0

それがわから便利府とができない場合、私は知りませんそれが、例外は、スーパークラスに関連しているように思える:

android.app.Dialog 
方法では、

show()です。

あなたはsource codeに見てみたいことがあります。ここで

0

「ウェブ」を初期化しようとしましたか?

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

あなたはあなたがNullpointerExeptionを取得します。この

private WebView web; 

のようなあなたの変数を宣言した場合は、オブジェクトを初期化する必要があります。

+0

Web変数を2行目に再割り当てすると、多かれ少なかれ冗長になりますが、感謝します。 –

+0

WebView web = new WebView((WebView)findViewById(R.id.webView1));もしあなたが好きなら... – BrainCrash

+0

それはさらに悪くて動作しません。 WebViewコンストラクタにはWebViewパラメータがありません。初期化とは何の関係もありません.WebViewはうまく表示され、正しいページを読み込みます。私が言ったように、私は自分自身でエラーを再現することはできません。 –

関連する問題