【问题标题】:progress dialog could not stop进度对话框无法停止
【发布时间】:2012-12-15 07:42:20
【问题描述】:

我是 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 页面。但进度对话框无法停止。

【问题讨论】:

    标签: android


    【解决方案1】:

    这样试试

    首先在您的onCreate() 中创建对话框

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

    然后在onPageStarted()方法中显示对话框。

    progressDialog .show();
    

    然后在您的 onPageFinished() 方法中将其关闭

    progressDialog.cancel();
    

    【讨论】:

    • 它没有停止。还在运行
    【解决方案2】:

    您不应该在 onPageStart 中创建 Dialog,当加载网页时,onPageStart() 可能会被多次调用。

    在你的 onPageStart 中,你创建了一个新的对话框而不关闭旧的对话框,所以旧的对话框会一直显示。

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

    1. 正如 lmran 所说,只在 onCreate() 中创建一次对话框。在 onPageStarted 中显示并在 onPageFinished 中关闭。
    2. 在创建新对话框之前,关闭旧对话框。

    【讨论】:

      【解决方案3】:

      仅使用此代码并尝试一下,

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

      【讨论】:

        【解决方案4】:
            @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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多