'doInBackground'中的setJavaScriptEnabled(true)覆盖强制关闭app

时间:2013-10-28 12:49:46

标签: javascript android webview android-asynctask

我已经按照这个非常基本的示例教程来加载WebView异步中的URL: android-asynctask-example

然而,当我点击“加载网页”时,应用程序强制关闭,错误:

  

“无法在未调用的线程内创建处理程序   Looper.prepare()”。

当我删除行"webView.getSettings().setJavaScriptEnabled(true);"时,应用程序运行正常,并显示WebView(显然在WebView中未启用JavaScript)。

如果我将该行留下,但设置为启用为false,则该应用程序也可以正常运行而不会崩溃。

我希望修改这个项目,但是我需要启用JavaScript,所以想知道是否有人知道它失败的原因?

任何帮助将不胜感激!

1 个答案:

答案 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" });

}

}