ejemplo - input dialog android
¿Por qué mi ProgressDialog está escuchando en CUALQUIER CLAVE(tacto) en lugar de retroceder para descartar? (2)
prueba debajo de la instrucción
no estoy seguro sobre el botón de cancelación completo ... he escuchado informes de que el método onCancel () no se activa correctamente. Mi solución solo consiste en hacer un botón normal en el diálogo con una llamada para regresar cada vez que se presiona el botón.
private void createCancelProgressDialog(String title, String message, String buttonText)
{
cancelDialog = new ProgressDialog(this);
cancelDialog.setTitle(title);
cancelDialog.setMessage(message);
cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
// Use either finish() or return() to either close the activity or just the dialog
cancelDialog.dismiss();
}
});
cancelDialog.show();
}
luego simplemente use un método de llamada simple de otra parte de su actividad
createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel");
una solución bastante simple, pero funciona;) también solo para notar que cancelDialog es una variable de borrado de actividad, si no necesita llamarlo desde otro lugar, entonces debería poder salirse con la suya simplemente limitando el alcance de la variable a ese método.
Tengo un ProgressDialog implementado así:
// show progress dialog while date is loading
progressDialog = ProgressDialog.show(XYActivity.this, getResources().getString(R.string.progress_dialog_please_wait), getResources().getString(R.string.progress_dialog_loading), true);
progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
cancel(true);
Log.w(LOGTAG, "loading cancelled via back button");
}
});
progressDialog.setCancelable(true);
Este ProgressDialog se implementa dentro de una AsyncTask (PreExecute), por lo que el método de cancelación (verdadero) detiene la AsyncTask. Todo esto funciona bien
El problema es que puedo cancelar el ProgressDialog con cualquier toque aleatorio en mi pantalla. Quiero descartar el diálogo solo presionando el botón de retroceso. ¡Por favor, ayúdame! Gracias chicos.
Esto funcionó para mí:
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(context, "Title", "Loading...", true, true, new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
cancel(true);
}
});
progressDialog.setCanceledOnTouchOutside(false);
}
El setCanceledOnTouchOutside
sugerido por GedankenNebel es bastante limpio.