【问题标题】:Cannot get ProgressDialog to stop after WebView has loadedWebView 加载后无法停止 ProgressDialog
【发布时间】:2011-09-24 14:12:48
【问题描述】:

我可以让 ProgressDialog 显示,但在加载 WebView 后我无法让它停止。我只需要一个简单的刷新按钮即可。

这是目前的工作代码:

      public class Quotes extends Activity implements OnClickListener{

      WebView webview;

      @Override
      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      webview = (WebView) findViewById(R.id.scroll);
      webview.getSettings().setJavaScriptEnabled(true);
      webview.loadUrl("http://www.dgdevelco.com/quotes/quotesandroid.html");

      View refreshClick = findViewById(R.id.refresh);
      refreshClick.setOnClickListener(this);

      }


      public void onClick(View v){
           switch(v.getId()){

           case R.id.refresh:
                ProgressDialog.show(Quotes.this, "", "Loading...", true);
                webview.reload();

                }
           }
      }

我就是想不通。我到处寻找,但似乎没有任何效果。

【问题讨论】:

标签: java android webview refresh progressdialog


【解决方案1】:

这是一个快速的答案,您应该真正为 WebViewClient 实现自己的类,您也应该在该类中显示对话框,但您会弄明白的。

首先,使您的对话框全局化,(在您的真实应用中,您可能希望将其传递给您的客户端,或在 webviewclient 中声明它,然后也覆盖 onPageStarted)。

  ProgressDialog dialog;     

然后简单地说:

 webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            dialog.dismiss();
        }
    });



   public void onClick(View v){
       switch(v.getId()){

       case R.id.refresh:
            dialog = ProgressDialog.show(Quotes.this, "", "Loading...", true);
            webview.reload();

            }
       }
  }

这是您需要的 API:WebViewClient

编辑

好吧,这让我很烦,这是正确的方法:

 public class Quotes extends Activity implements OnClickListener{

  private WebView webview;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    webview = (WebView) findViewById(R.id.scroll);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new MyWebViewClient(this));
    webview.loadUrl("http://www.dgdevelco.com/quotes/quotesandroid.html");

    findViewById(R.id.refresh).setOnClickListener(this);
  }


  public void onClick(View v){
       switch(v.getId()){
       case R.id.refresh:
            webview.reload();
             break;
            }
       }
  }

新课程:

 public class MyWebViewClient extends WebViewClient {
    private Context mContext;
    private ProgressDialog mDialog;

  public MyWebViewClient(Context context){
    mContext = context;
  }

  @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            mDialog = ProgressDialog.show(mContext, "", "Loading...", true);
        }

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

 }

【讨论】:

  • 成功了!!!你太棒了!非常感谢你!我知道它一定在某个地方。你真摇滚!谢谢你,谢谢你,谢谢你。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 2014-07-21
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多