我已经按照这个非常基本的示例教程来加载WebView异步中的URL: android-asynctask-example
然而,当我点击“加载网页”时,应用程序强制关闭,错误:
“无法在未调用的线程内创建处理程序 Looper.prepare()”。
当我删除行"webView.getSettings().setJavaScriptEnabled(true);"
时,应用程序运行正常,并显示WebView(显然在WebView中未启用JavaScript)。
如果我将该行留下,但设置为启用为false,则该应用程序也可以正常运行而不会崩溃。
我希望修改这个项目,但是我需要启用JavaScript,所以想知道是否有人知道它失败的原因?
任何帮助将不胜感激!
答案 0 :(得分:0)
以这种方式试试,
public class MainActivity extends Activity {
final Context context = this;
WebView webView =null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
private class LoadWebPageASYNC extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute(String result) {
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
}
@Override
protected String doInBackground(String... urls) {
webView.loadUrl(urls[0]);
return null;
}
@Override
protected void onPostExecute(String result) {
}
}
public void dummyFunc(View view){
Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
}
public void readWebpage(View view) {
LoadWebPageASYNC task = new LoadWebPageASYNC();
task.execute(new String[] { "http://www.javacodegeeks.com" });
}
}