¿Por qué no hay botón de cancelación en los cuadros de diálogo de progreso de Android?

Estoy frente a un momento de rascarse la cabeza similar a lo que esta persona (desde enero 2008) experimentó cuando me di cuenta de que no hay botón de cancelar en el diálogo de progreso de Android o hilanderos. Ahora es julio de 2009 y acabo de instalar la versión cupcake de Android. ¿Ha cambiado esto? Si no, ¿está agregando un botón de cancelación a los cuadros de diálogo y cómo lo hace?

No soy un usuario o desarrollador de Android, pero creo que la respuesta dada en el subproceso vinculado es bastante decente: hay una clave de "retroceso" de hardware en todos los dispositivos Android. Se supone que los usuarios saben presionar Back to back de cualquier actividad en la que se encuentren actualmente.

Por lo tanto, los diseñadores de la interfaz de usuario sienten que es innecesario incluir un botón de volver / cancelar GUI. Esto podría ser visto como la aplicación de la interfaz de usuario del principio DRY ; Si ya hay una manera de hacer algo, eso es suficiente.

No estoy seguro sobre el botón de cancelar todo … He oído informes de la onCancel () método no disparar correctamente. Mi solución sólo consiste en hacer un botón normal en el diálogo con una llamada para volver 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 return; } }); cancelDialog.show(); } 

Simplemente utilice 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 hace el truco;) también sólo para notar que cancelDialog es una variable de limpieza de la actividad, si usted no necesita llamar desde otro lugar, entonces debería ser capaz de salirse con sólo limitar el alcance de la variable a Método.

La clave de hardware es la respuesta aquí. Tengo cuidado de generalizar el principio de DRY a las interfaces de usuario. Hay un montón de casos en los que usted necesita para martillar, martillo, martillo el mismo punto al usuario repetidamente a través de títulos, texto del cuerpo, colores e imágenes.

Los usuarios no "leen" UIs la manera que usted lee una novela. Ellos escanearán leídos.

No puedo hablar de otras aplicaciones, pero en la mina cualquier cosa que pueda causar el hilo de la interfaz de usuario para esperar se ejecuta en un hilo separado. Lo más que voy a hacer es mostrar un pequeño hilandero de progreso en la barra de título para que el usuario sepa algo que está pasando en el fondo.

Como usuario de Android, y desarrollador, puedo decir, en mi opinión, y basado en mi comprensión de la plataforma, que hay una buena razón para no tener un botón de cancelación de forma predeterminada en los cuadros de diálogo de cancelación de progreso.

Como desarrollador, estos cuadros de diálogo no se pueden cancelar de forma predeterminada, es decir, debe definirlos de forma explícita como cancelables.

Esto tiene sentido, ya que su propósito es alertar al usuario, a través del hilo de la interfaz de usuario, de que se está realizando algún trabajo en otro lugar que sea importante para la actualización del hilo de la interfaz de usuario, antes de que el usuario continúe utilizando la aplicación.

Por ejemplo, al buscar una lista de datos para ocupar una pantalla vacía, no hay nada con lo que interactuar, y el usuario debe ser consciente de que algo está pasando, y esperar que no haya nada disponible para interactuar con hasta que este proceso Esta completo.

Sin embargo, puede haber casos, como la recuperación de datos desde Internet, donde el proceso es "incompleto" y debido a problemas de conectividad, es posible que no pueda completar la solicitud y quedar atascado aquí.

Esto como un desarrollo es donde se habilita el diálogo para ser cancelable.

Ahora como usuario, que entiende claramente el paradigma de la interfaz de usuario de Android, sé que si quiero volver a lo que estaba haciendo antes, o "cancelar" la operación actual, debería pulsar la tecla de retroceso.

Como usuario, no es diferente de saber que en Android, la clave de menú a menudo puede revelar opciones ocultas, algunas veces en una pantalla aparentemente en blanco sin ninguna manera de interactuar.

Este es el comportamiento que un usuario espera y la forma en que está diseñada la plataforma. Usted podría muy bien agregar un botón de cancelación, pero desde una perspectiva de los usuarios que entiende su teléfono, esto no hace diferencia, la tecla de nuevo es claramente la elección prevista para este fin.

Las actividades y las interfaces de usuario tienen un flujo, fluyen a través de las actividades y las "pantallas" de la interfaz de usuario que están "apiladas" y el botón de retroceso esencialmente "hace estallar" la última cosa de la pila para volver a donde estaban anteriormente. Si ve el cuadro de diálogo como otra de estas actividades, desee hacerla saltar desde la parte superior de la pila para volver a lo que está debajo o una actividad anterior.

Si un desarrollador tiene un diálogo que no puede ser cancelado por la espalda, es o bien, por diseño, por lo que puede, en casos, ser muy buena razón para, o, es el desarrollo deficiente y una supervisión por parte del devloper.

  • ¿Cómo agregar un botón a un gráfico de barras sin xml?
  • Desactivar oscurecimiento oscuro en el cajón de navegación
  • No se puede emitir a una clase extendida en Java
  • Sustitución dinámica de Fragmentos de Android
  • Error de Android: recreate () debe ser llamado desde el subproceso principal
  • Android y Lambda
  • Android Volley - Comprobación del estado de Internet
  • Control deslizante en Android ... ¿SeekBar es realmente mi mejor / única opción?
  • Deserialización de Gson de List <String> en realmList <RealmString>
  • No se puede resolver el método openFileInput (Android Development)
  • AndroidRuntime error: Paquete: incapaz de marshal valor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.