【问题标题】:how to dismiss the progressbar before the loading using the back button?如何在使用后退按钮加载之前关闭进度条?
【发布时间】:2011-06-21 08:24:42
【问题描述】:

我正在使用网页视图的进度条。我需要在页面加载之前停止进度条。我按下后退按钮但在加载之间没有工作。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.webview);
        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();

        progressBar =new ProgressDialog(this);
        progressBar.setCancelable(true);
        progressBar.show();


        mWebView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.i("TEST", "Processing webview url click...");
                view.loadUrl(url);
                return true;
            }

            public void onPageFinished(WebView view, String url) {
                Log.i("TEST", "Finished loading URL: " +url);
                if (progressBar.isShowing()) {
                    progressBar.dismiss();
                }
            }

            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Log.e("TEST", "Error: " + description);
                Toast.makeText(getApplicationContext(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
                alertDialog.setTitle("Error");
                alertDialog.setMessage(description);
                alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        return;
                    }



                });
                alertDialog.show();
            }
        });
        mWebView.loadUrl("http://www.google.com");
}

对于后退按钮测试我使用这个

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            Toast.makeText(getApplicationContext(),"hi", Toast.LENGTH_LONG).show();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

【问题讨论】:

    标签: android android-progressbar


    【解决方案1】:

    使用 UIWorker Thread 使用多线程实现进度和视觉外观

    【讨论】:

    • 我已经使用 AsnyTask 和简单的处理程序实现了代码,但同样的问题,还有其他想法吗?像我怎样才能杀死堆栈中的任何活动?
    【解决方案2】:

    嗨 请检查一下

    progressBar = new ProgressDialog(this);
            progressBar.setCancelable(true);
            progressBar.setOnCancelListener(new OnCancelListener() {
    
                public void onCancel(DialogInterface arg0) {
                     if(progressBar.isShowing())
                          progressBar.dismiss();
                     finish();
                }
            });
                progressBar.setMessage("Loading...");
            progressBar.show();
    

    感谢每一个人

    【讨论】:

      【解决方案3】:

      如果我是你,我会使用 AsyncTask 加载 URL 的数据,并在其间显示 ProgressDialog。

      • 开始时,产生一个不同的线程来获取 URL 的内容
      • 开始显示 ProgressDialog
      • 当你有线程返回的 URL 的数据时,在 webView 中加载它
      • 关闭 ProgressDialog

      对于在不同线程中运行的东西,请检查 AsyncTask。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        • 2021-05-07
        • 2011-08-31
        • 2013-06-17
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        相关资源
        最近更新 更多