¿Cómo descartar la barra de progreso antes de la carga usando el botón Atrás?
-
28-10-2019 - |
Pregunta
Estoy usando la barra de progreso para la vista web. Necesito detener la barra de progreso antes de la carga de la página. Presiono el botón Atrás pero no trabajo entre la carga.
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");
}
Para la prueba de botón de retroceso, uso esto
@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);
}
Solución
Hola por favor mira esto
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();
Gracias a todos
Otros consejos
Si yo fuera usted, usaría AsyncTask para cargar los datos de la URL y mostraría el ProgressDialog en el medio.
- Al principio, desove un hilo diferente que obtiene el contenido de la URL
- Comience a mostrar el progresoDialog
- Cuando tenga los datos de la URL que devuelve el hilo, cargándolo en WebView
- Descartar el progresodialog
Para ejecutar las cosas en diferentes hilos, verifique AsyncTask.
Use múltiples lectura para implementar el progreso y la apariencia visual utilizando el hilo de uiworker
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow