0

WebView を含むアクティビティがあります。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    webView = new WebView(this);
    setContentView(webView);
    webView.getSettings().setUserAgentString(MY_CLIENT);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setWebViewClient(new MyWebViewClient());
}

私のアクティビティは 2 つのメニュー項目を定義します。これにより、URL1 と URL2 の 2 つの異なる URL が読み込まれます。

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_url1:
        webView.loadUrl(URL1);
        return true;
    case R.id.menu_url2:
        webView.loadUrl(URL2);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

ただし、URL は、対応するメニュー項目が選択された 2 回目にしか読み込まれません。MyWebViewClient.onPageStarted() と MyWebViewClient.onPageFinished() にブレークポイントを設定すると、最初のクリックで onPageFinished() が呼び出されますが、URL は WebView に読み込まれません。2 回目のクリックで onPageStarted() が呼び出され、続いて onPageFinished() が 2 回呼び出され、URL が WebView に読み込まれます。次に別の URL を読み込もうとすると、プロセスが最初からやり直され、再び 2 回のクリックが必要になります。

ターゲットの Android SDK は 17、最小 SDK は 8 です。Nexus 7 でテストしています。

最初のクリックで WebView に URL を読み込ませるにはどうすればよいですか? また、そのような問題をどのようにデバッグできますか?

4

2 に答える 2

0

問題は、ロードしようとしているURLに関連しているようです。他のURLは問題なく機能します。ロードしようとしているものについては、常にloadURL()の2つの呼び出しを実行する必要があるため、コードでそれを正確に実行しています-奇妙な回避策ですが、これまでのところ機能します。私はURLを調べなければならない、と思った...

于 2012-12-31T12:16:37.237 に答える
0

追加してみる

webView.reload();

電話する前に

webView.loadUrl(...);

この解決策は、あなたのような問題で私に役立ちます

于 2013-07-24T06:22:52.920 に答える