Итак, у меня есть эта AsyncTask, которая загружает WebView в onPostExecute, которая в противном случае работает отлично, однако мне нужно что-то сделать для onLoadResource, поэтому я пытаюсь установить WebViewClient и по какой-то причине вызывает NullPointerException
private class newThread extends AsyncTask{ private WebView webview; ... protected void onPostExecute(Void result){ setContentView(R.layout.reply); webview.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ return true; } @Override public void onLoadResource(WebView view, String url){ finish(); } }); webview = (WebView)findViewById(R.id.replyview); webview.getSettings().setJavaScriptEnabled(true); webview.setScrollBarStyle(0); webview.loadDataWithBaseURL("http://example.com", "example", "text/html", "utf-8", null); } ...
Что-то не так в этом коде?
Если я использую в основном тот же метод, но вне AsyncTask, то ошибок нет. И если я удаляю строки setWebViewClient, тогда он работает нормально.
В вашем коде вы пытаетесь вызвать функцию webview (webview.setWebViewClient
), прежде чем присваивать ему что-либо (webview = (WebView)findViewById(R.id.replyview);
) изменить порядок этих двух утверждений.