2011-12-16 5 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)이 나타납니다 내가 찾은 클래스에 주석이 될 수 있습니다. 내가 null를로드하기 위해 노력하고있어 가능성이 있기 때문에,하지만 난 URL이 null을 할 수있는 방법을 볼 수 없습니다 특히 때문에 나는이 매우 확실 해요 - 나는 충돌을 추측하고있어

WebView 관련이 .

나는이 보고서가 갤럭시 넥서스 (Android 4.0)에서 나온 것이라고 생각하지만 차이가 있지만 확실하지 않습니다. 그렇지 않으면 Honeycomb 장치입니다.

누구나 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

문제의 라인이다 : 그것은 BU 수있는 경우

client.onShowCustomView(mLayout, mOrientation, mCallback); 
+0

여기에 일부 코드를 게시하십시오. –

+0

완료, 감사 :-) –

답변

7

여기에 source code for android 4.0입니다.

라인 84에서는 mWebView.getWebChromeClient()이 예외에 따라 널을 반환합니다 (널 확인없이 85 행에서 사용됨).

web.setWebChromeClient(new WebChromeClient()); 

하지만이 정말 :

해결 방법은 (예를 들어, UI가 발생 브라우저에 영향을 미칠 업데이트 및 자바 스크립트 경고를 진행할 수있는 무언가가 여기에 전송 될 때 호출되는) 빈 WebChromeClient를 설정하는 것입니다 이상하지 않아야합니다.

+0

예, 정말 이상합니다. 이것에 관한 어리석은 점은 오류를 재생산 할 수 없기 때문에 고정되어 있는지 테스트 할 수 없다는 것입니다. 그래도 나는 그것을 줄 것이다. –

+2

이 고정 기능은 나를 위해 작동했습니다. 웹 뷰에서로드하는 웹 페이지가 전체 화면으로 이동하고 일부 기능을 사용하여 '전체 화면'을 클릭하여 응용 프로그램을 중단 시켰습니다. – scottyab

0

모르겠어요 유용하고 확실하지 그것은 예외이지만 슈퍼 클래스와 관련이있는 것처럼 보입니다.

android.app.Dialog 
방법 : show()에서

.

source code을 살펴볼 수 있습니다.

0

"웹"을 초기화 해 보셨습니까?이

private WebView web; 

처럼 변수 당신은 NullpointerExeption를 받게됩니다 선언하면

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

, 당신은 객체를 초기화해야합니다.

+0

두 번째 줄에서 웹 변수를 재 할당 할 때 다소 중복되었지만 감사합니다. –

+0

WebView 웹 = 새 WebView ((WebView) findViewById (R.id.webView1)); 당신이 선호한다면 ... – BrainCrash

+0

그건 더 나빠서 작동하지 않을거야. WebView 생성자에는 WebView 매개 변수가 없습니다. 초기화와는 아무런 관련이 없습니다. WebView는 잘 보이고 올바른 페이지를로드합니다. 내가 말했듯이, 나는 오류를 직접 재현 할 수 없다. –

관련 문제