0

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

但是,当我单击“加载网页”时,应用程序强制关闭,并出现错误:

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

当我删除该行时"webView.getSettings().setJavaScriptEnabled(true);",该应用程序工作正常,并显示一个 WebView(显然 WebView 中没有启用 JavaScript)。

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

我想修改这个项目,但是我需要启用 JavaScript,所以想知道是否有人知道它为什么会失败?

任何帮助将不胜感激!

4

1 回答 1

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

}

}

于 2013-10-28T12:59:34.537 回答