7

URL が既に読み込まれているとします (元の URL と呼びましょう)。

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        webView.loadUrl("file:///android_asset/missing.html");
    } 
});

「Web ページを利用できません」というメッセージが表示されないように、独自のエラー ページを作成しました。アプリは、再開されるたびに webview をリロードする必要があります。だから私は次のコード行を持っています:

@Override
protected void onResume() {
    super.onResume();
    webView.reload();
}

ここでの問題は、エラー ページが読み込まれたとき (たとえば、ユーザーがインターネットに接続されていない場合)、接続が再び利用可能になり、ユーザーがアプリを再開したときに、元の URL が読み込まれないことです (これはロジックのようですが、現在はmissing.htmlです)。しかし、これは良いアプローチですか?問題に対する提案はありますか?

ユーザーがコンテンツをリロードしたい場合は、更新ボタンもあります。ここで同じ問題。

4

3 に答える 3

4

次のように、webView.reload() を使用する代わりに、必要な URL をロードする必要があります。

webView.loadUrl("http://yoururl");

または次のコマンドで前のページに戻ります。

webView.loadUrl("javascript:history.go(-1)");
于 2013-10-25T16:16:50.673 に答える
1

http://developer.android.com/training/basics/network-ops/managing.htmlで提案されているように、 onResume() でインターネット接続を調べます

public static boolean isOnline() {
  ConnectivityManager connMgr = (ConnectivityManager) App.instans.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
  return (networkInfo != null && networkInfo.isConnected());
}

public void onResume() {
于 2012-12-06T14:54:21.393 に答える