6

Google ドキュメントから Web ビューにドキュメントを読み込んでいます。私が見る問題は、ユーザーがアプリを起動してネットワークに接続していないときに、次の画面が表示されることです。

ここに画像の説明を入力

彼がネットワークに接続した場合、アプリを再起動せずに webview 内でそのリンクを開く方法は何ですか? WebView でそのリンクをクリックすることも 1 つのオプションですが、この種のシナリオが発生した場合、WebView でページをリロードするためのよりユーザーフレンドリーな方法を提供できますか?

4

3 に答える 3

10

次のように、WebViewClient でネットワーク エラーをキャッチし、自分でカスタマイズしたレイアウトを表示できます。

       webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onReceivedError(final WebView view, int errorCode, String description,
                    final String failingUrl) {
                //control you layout, show something like a retry button, and 
                //call view.loadUrl(failingUrl) to reload.
                super.onReceivedError(view, errorCode, description, failingUrl);
            }
        });
于 2013-08-14T03:37:25.170 に答える
0

まず、「Webpage not available」は、エラーが発生したときに webviewclient がスローするエラー ページです。カスタム webviewclient を設定し、onReceiverError をオーバーライドすると、webview が受け取るエラーが処理されます。

webView.setWebViewClient(new WebViewClient() {

      @Override
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
      {
         //some codes here that you want to do when webview receives an error
      }
    });

次に、ネットワーク接続のマニフェストを正しく設定しましたか? とにかく、これら3つを追加してください:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

第三に、アプリを再起動せずにリンクに移動するには、次のことを行う必要があります。

  1. このコードを webview を作成する場所に追加します

    if(savedInstanceState == null)
    { wv.loadUrl( url here ); }
    
  2. 次の 2 つのメソッドを追加します。

    @Override protected void onSaveInstanceState(Bundle outState ) { super.onSaveInstanceState(outState); wv.saveState(outState); }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState)
    {
        super.onSaveInstanceState(savedInstanceState);
        wv.restoreState(savedInstanceState);
    }
    

第三に、ページをリロードするとき、私がすることは

  1. onCreateOptionsMenu をオーバーライドし、xml を作成します。これを行う方法を簡単にグーグルで検索できます
  2. 膨らませます getMenuInflater().inflate(R.menu.main, menu);
  3. onOptionsItemSelected をオーバーライドして項目を追加すると、簡単にググることもできます。
于 2013-08-14T04:10:07.913 に答える