4

アプリで進行状況ダイアログを使用していますが、停止できませんでした。アプリで webview を使用しています。最初のアクティビティでは、接続ボタンがあります。2 番目のアクティビティでは、Facebook コードに接続できます。2 番目のアクティビティ コードでは:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.facebook);
    wvFacebook.setWebViewClient(new MyWebViewClient()); 
    wvFacebook.loadUrl(strFacebook);
} 

private class MyWebViewClient extends WebViewClient 
{            
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);
        return true;
    }

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

        super.onPageStarted(view, url, favicon);
        prDialog = ProgressDialog.show(getParent(), "In progress", "Loading, please wait...");
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        Log.e("status","calling....");
        super.onPageFinished(view, url);
        prDialog.dismiss();
        Log.e("status","calling next......");
    }
}

接続ボタンをクリックすると、2 番目のアクティビティが実行され、Facebook ページが取得されます。しかし、進行状況ダイアログを停止できませんでした。

4

4 に答える 4

1

このようにしてみてください

最初にダイアログを作成しますonCreate()

ProgressDialog progressDialog =new  ProgressDialog(getApplicationContext());
progressDialog.setMessage("Please Wait");

次に、onPageStarted()メソッドでダイアログを表示します。

progressDialog .show();

onPageFinished()次に、メソッドでそれを却下します

progressDialog.cancel();
于 2012-12-15T08:20:01.647 に答える
0
    @Override
        public void onPageFinished(WebView view, String url) {

            try{
                    if (prDialog.isShowing()|| prDialog!= null) {
                        prDialog.dismiss();
                        prDialog= null; /*** Add ***/
                    }

                    }catch(Exception exception){
                        exception.printStackTrace();
                    }

            }
        }

完全な詳細を取得するには、次のリンクにアクセスすることもできます...

http://androiddubd.blogspot.com/2014/07/how-to-show-progress-dialog-or-loader.html

于 2015-08-13T06:40:17.197 に答える
0

このコードだけを使用して試してみてください。

@Override
        public void onPageFinished(WebView view, String url) {
            Log.e("status","calling....");
            super.onPageFinished(view, url);
            if (prDialog != null || prDialog.isShowing())
                prDialog.dismiss();
            Log.e("status","calling next......");
        }
于 2012-12-15T13:03:19.803 に答える
0

onPageStart でダイアログを作成しないでください。Web ページをロードするときに、onPageStart() が複数回呼び出される可能性があります。

onPageStart では、古いダイアログを閉じずに新しいダイアログを作成するため、古いダイアログが常に表示されます。

これを解決するには、多くの選択肢があります。

  1. lmran が言ったように、onCreate() で一度だけダイアログを作成します。onPageStarted で表示し、onPageFinished で閉じます。
  2. 新しいダイアログを作成する前に、古いダイアログを閉じてください。
于 2012-12-15T12:17:30.277 に答える