4

我是 android 新手。我在我的应用程序中使用进度对话框,但它无法停止。在我的应用程序中,我正在使用 webview。在第一个活动中,我有连接按钮。在第二个活动中,连接到 facebook 代码可用。在第二个活动代码中:

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......");
    }
}

单击连接按钮时,将执行第二个活动并获取 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) {
            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 中创建 Dialog,加载网页时,可能会多次调用 onPageStart()。

在 onPageStart 中,您创建了一个新对话框而不关闭旧对话框,因此旧对话框将始终显示。

要解决这个问题,您有很多选择:

  1. 正如 lmran 所说,只在 onCreate() 中创建一次对话框。在 onPageStarted 中显示它并在 onPageFinished 中关闭。
  2. 在创建新对话框之前,请关闭旧对话框。
于 2012-12-15T12:17:30.277 回答
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 回答