Come licenziare la barra di progresso prima del caricamento utilizzando il pulsante Indietro?

StackOverflow https://stackoverflow.com/questions/4898093

  •  28-10-2019
  •  | 
  •  

Domanda

Sto usando la barra di avanzamento per la visualizzazione Web. Devo interrompere la barra di avanzamento prima del caricamento della pagina. Premi il pulsante Indietro ma non funziona tra il caricamento.

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

Per il test del pulsante di schiena lo uso

@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);
    }
È stato utile?

Soluzione

Ciao per favore controlla questo

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

Grazie a tutti

Altri suggerimenti

Se fossi in te, userei AsyncTask per caricare i dati dell'URL e mostrare il progresso in mezzo.

  • All'inizio, spawn da un thread diverso che recupera il contenuto dell'URL
  • Inizia a visualizzare il ProgressDialog
  • Quando hai i dati dell'URL che il thread ha restituito, lo caricalo in WebView
  • Respingere il progressdialog

Per eseguire cose in un thread diverso, controlla AsyncTask.

Usa multithreading per implementare progressi e apparenza visiva usando il thread di UIWorker

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top