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 комментарий в классах, которые я нашел.

Я предполагаю, что сбой связан с WebView - возможно, потому, что я пытаюсь загрузить null, но я очень уверен в этом, особенно потому, что я не вижу путь для URL быть 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.

Edit 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 у вас есть mWebView.getWebChromeClient(), который возвращает null в соответствии с вашим исключением (он используется в строке 85 без нулевой проверки).

Обойти это установить пустой WebChromeClient (который вызывается, когда что-то, что может повлиять на браузер UI происходит, например, отчеты о ходе работ и предупреждения JavaScript посылаются здесь):

web.setWebChromeClient(new WebChromeClient()); 

Но это на самом деле странно, потому что он никогда не должен быть нулевым.

+0

Err, да, это действительно странно. Глупость в том, что я не могу проверить, исправлено ли это, потому что я не могу воспроизвести ошибку. Однако я отдам это. –

+2

Это исправление работает для меня, оно было вызвано веб-страницей, которую я загружал в веб-браузере, была функция, чтобы перейти в полноэкранный режим, нажав «полный экран», используемый для сбоя приложения. – scottyab

0

Я не знаю, если это может бу полезно и не уверен, это, но похоже, что исключение связано с суперклассом:

android.app.Dialog 

по методу show().

Возможно, вы захотите взглянуть на source code.

0

Вы пытались инициализировать «сеть»?

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

если вы объявили переменная как этот

private WebView web; 

Вы получите NullpointerExeption, вы должны инициализировать объект.

+0

Это более или менее избыточно, поскольку вы переназначаете сетевую переменную во второй строке, но спасибо. –

+0

WebView web = новый WebView ((WebView) findViewById (R.id.webView1)); если вы предпочитаете ... – BrainCrash

+0

Это еще хуже и не будет работать. Конструктор WebView не имеет параметра WebView. Это не имеет ничего общего с инициализацией - WebView отображается просто отлично и загружает правильную страницу. Как я уже сказал, я не могу сам воссоздать ошибку. –

Смежные вопросы