0

WebView async: android-asynctask-exampleに URL をロードするためのこの非常に基本的なサンプル チュートリアルに従いました。

ただし、「Webページの読み込み」をクリックすると、次のエラーが表示されてアプリが強制的に閉じられます。

「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 に答える