как закрыть прогрессбар перед загрузкой кнопкой назад? - PullRequest
2 голосов
/ 04 февраля 2011

Я использую индикатор выполнения для просмотра веб-страниц. Мне нужно остановить индикатор выполнения перед загрузкой страницы. Я нажимаю кнопку возврата, но не работаю между загрузками.

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

Ответы [ 3 ]

4 голосов
/ 11 февраля 2011

Привет Пожалуйста, проверьте это

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();

Спасибо всем

1 голос
/ 14 февраля 2011

На вашем месте я бы использовал AsyncTask для загрузки данных URL и показывал бы ProgressDialog между ними.

  • При запуске создайте другой поток, который извлекает содержимое URL
  • Начать отображение ProgressDialog
  • Если у вас есть данные URL-адреса, возвращенного потоком, загрузите их в веб-представление
  • Уволить Диалог Прогресса

Для запуска вещей в другом потоке, проверьте AsyncTask.

0 голосов
/ 04 февраля 2011

Использование многопоточности для реализации прогресса и визуального оформления с использованием UIWorker Thread

...