10

私の質問はこれとは異なります..ページの読み込みが開始されたときに進行状況ダイアログが開始され、Webビューでページの読み込みが終了したときに終了することを望みます。私の問題は、進行状況ダイアログが開始され、決して閉じられないことです。ブレークポイントを設定しました。これは、進行状況ダイアログが開始され、何度も却下され、ページの読み込みが完了した後でも開始され、却下されないことを示しています。私の質問は、1 ページの読み込みで onPageStarted が何度も実行されるのはなぜですか? ページの読み込みが完了した後に onPageFinished が呼び出されないのはなぜですか?

       myWebView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            myWebView.loadUrl(url);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(myWebView, url, favicon);
            Log.d("mytag","Page Loading Started");
            //myURLProgressDialog= ProgressDialog.show(WebviewExampleActivity.this, "Page Loading", "Wait for a moment...");
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            Log.d("mytag","Page Loading Finished!");
            super.onPageFinished(myWebView, url);
            //myURLProgressDialog.dismiss();
        }

    });

自己タグ付けされたフィルター処理されたログは、単一ページをロードする場合は次のようになります。

   10-06 10:32:49.298: DEBUG/mytag(508): Page Loading Started
   10-06 10:32:49.998: DEBUG/mytag(508): Page Loading Started
   10-06 10:32:50.048: DEBUG/mytag(508): Page Loading Finished!
   10-06 10:32:50.048: DEBUG/mytag(508): Page Loading Started
   10-06 10:33:00.898: DEBUG/mytag(508): Page Loading Finished!

既に読み込まれたページのリンクをクリックすると、正常に動作します。ログは次のとおりです。

10-06 10:59:25.098: DEBUG/mytag(543): Page Loading Started
10-06 10:59:30.889: DEBUG/mytag(543): Page Loading Finished!
4

5 に答える 5

6

で既に開いているかどうかを確認し.isShowing()ます。

final ProgressDialog mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Loading...");

browser.setWebViewClient(new myViewClient(){

    @Override  
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

        if(!mProgressDialog.isShowing())
        {
            mProgressDialog.show();
        }

    }  
    @Override  
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);

        if(mProgressDialog.isShowing()){
            mProgressDialog.dismiss();
        }                
    }              

});
于 2012-11-11T21:16:06.010 に答える
0

最初のページが読み込まれるときに、一部のスクリプトがリダイレクトを作成することがあります (セッション ID が必要なため、またはページを再度読み込む必要があるため)。

url パラメーターをログに記録することで、別のページ (または追加のパラメーターを含む同じページ) が読み込まれているかどうかを確認できます。

最初のページの読み込みが完了する前に新しい読み込みリクエストが行われた場合、その最初のページに対して OnPageFinished メソッドは呼び出されないと思います。

于 2012-05-28T15:11:13.753 に答える