24

編集:私は何年も前にこのプロジェクトに取り組んでいましたが、残念ながら、特定のシナリオで回答が機能しているかどうかを確認できません。

私たちのブログを表示する必要がある 1 つの WebView で苦労しています。初期化すると、問題なく動作します。ユーザーは、WebView 内のさまざまなリンクに移動できます。ブログに戻るには、メインのブログ サイトを再度読み込む必要がある WebView の外にあるボタンがあります。

問題は、loadUrl への 2 回目の呼び出しの後に何もロードされないことです。これが私のコードです:

private WebView wv;

        @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

            this.setContentView(R.layout.blog);

    wv = (WebView) findViewById(R.id.blog_webview);
    wv.getSettings().setJavaScriptEnabled(true);
    wv.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon {
            MyLog.logDump("onPageStarted: " + url);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
                            MyLog.logDump("onPageFinished: " + url);
        }
    });

    wv.loadUrl(Constants.BLOG_URL);
}

私の OnClickListener によって呼び出される関数は次のとおりです。

    public void reLoadUrl() {
        wv.loadUrl(Constants.BLOG_URL);

}

しかし、onPageFinished と onPageStarted のログは、wv.loadUrl が呼び出され、正しい URL をロードしていることを示していますが、webview 自体のコンテンツは変更されません。キャッシュ、履歴、ビューをクリアしようとしましたが、別の WebSettings を試し、webView.goBack() を使用しようとしましたが、結果は出ませんでした。また、これらのアイデアは機能しません: Android で奇妙な webview goBack の問題

reLoadUrl が望ましい結果を示す場合もありますが、失敗すると、再び機能させることはできなくなります。何が起こっているのでしょうか?WebView コードを読み込もうとしましたが、役に立ちそうなものは見つかりませんでした。

追加できる唯一のことは、webViews に大きく依存しているいくつかの広告ネットワークを使用していることです。それらを断ろうとしましたが、ライブラリを削除しなかったため、それらが原因ではないかどうかはわかりません。

何か案は??

4

15 に答える 15

12

以下の順序で正確を使用します。

   wv.clearCache(true);
   wv.clearView();
   wv.reload();
   wv.loadUrl("about:blank");
   wv.loadData(Constants.BLOG_URL);
于 2013-05-01T07:05:12.777 に答える
8

私は最後の日かそこらをWebViewを利用するアプリケーションに取り組んできました。WebViewへのデータのロードに関していくつか問題がありました。

これが機能するかどうかは完全にはわかりませんが、おそらくこのコードを置き換えてください。

public void reLoadUrl() {
    wv.loadUrl(Constants.BLOG_URL);

}

このコードで:

public void reLoadUrl(){

    wv.clearView();
    wv.loadUrl(Constants.BLOG_URL);

}

WebViewをクリアすると、問題が解決する可能性があります

于 2013-01-11T13:44:05.417 に答える
3

私は同じ問題を抱えていました.resumeTimers()を呼び出すと問題が解決しました...

于 2015-02-17T15:45:22.017 に答える
2

WebView 全体を再初期化して reLoadUrl() から呼び出すメソッドを作成するだけです。

void loadWebView() {
    wv = (WebView) findViewById(R.id.blog_webview);
    wv.getSettings().setJavaScriptEnabled(true);
    wv.setWebViewClient(new WebViewClient() {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon {
        MyLog.logDump("onPageStarted: " + url);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
                        MyLog.logDump("onPageFinished: " + url);
    }
});

wv.loadUrl(Constants.BLOG_URL);
}

public void reLoadUrl() {
   loadWebView();
}
于 2013-05-03T12:16:52.253 に答える
2

WebChrome クライアントを設定してみてください。場合によっては、WebView が正しく動作するために WebChrome Clint のサポートが必要です。

wv.setWebChromeClient(new WebChromeClient());
于 2013-05-01T08:27:04.237 に答える
1

私は同じ問題に直面していましたが、最終的にこれを解決することができました.私はこれが良いか悪いかはわかりませんが、私にとってはうまくいく.

mWebView.clearCache(true);
// destroy before reload new url
parentView.removeView(mWebView);
mWebView.clearHistory();    
mWebView.destroy();

ただし mWebView.destroy(); 「java.lang.Throwable: エラー: WebView.destroy() が接続されている間に呼び出されました!」というエラーを生成します。そして、私はそれを検索しましたが、解決策が得られず、多くの人が今までアプリケーションに影響を与えないと言っています(このNBを解決することはまだわかりません:私は WebChromeClient を使用しています)。

于 2014-05-10T07:16:51.857 に答える
1

私は同じ問題に直面しており、次の手順で機能させました。

webView.clearCache(true);
webView.loadUrl("Url");

複数のURLが正常にロードされました。

于 2013-07-08T09:05:04.717 に答える
0

私は同じ問題に直面していました。毎回新しい Webview を作成していました。新しい webView を作成する前に、まず以前の webView を破棄してください。この助けを願っています!! webview をグローバル変数にします。お気に入り -

ウェブビュー w;

次に、新しい webview を作成する前に、前のものを破棄するだけです

                if(null != w)
                {
                    //destroy the previous webview, before creating the new one
                    w.destroy();
                }
                w= new WebView(activity);
于 2015-07-24T07:37:29.403 に答える
0

私は同じ問題に直面しましたが、上記の解決策はどれもうまくいきませんでした。そこで、次のように JavaScript を使用して WebView をリロードして修正しました。

webView.loadUrl( "javascript:window.location.reload( true )" );

また、WebView に対して JavaScript を有効にする必要があります。

webView.getSettings().setJavaScriptEnabled(true);
于 2017-02-14T18:39:39.923 に答える
-1

ではonCreate、 を使用する代わりに、使用 wv.loadUrl(Constants.BLOG_URL);するだけですwv.loadDataWithBaseURL(baseUrl, readFileAsString("index.html") , mimeType, "UTF-8", null);

于 2014-08-08T04:16:08.303 に答える