Pregunta

Cuál crees que es la mejor manera de hacer una aplicación similar a un asistente (el usuario puede navegar entre las pantallas con un botón siguiente y otro atrás, y cada pantalla tiene que guardar algunos datos de estado) en la plataforma Android.

Principalmente puedo pensar en dos enfoques:

  1. Tener una actividad + vista para cada pantalla y luego hago el cambio de pantalla llamando a cada actividad. Lo que hace que esto sea agradable es que puedo usar el botón de retroceso del sistema como mi controlador de respaldo y no tengo que ocuparme de eso yo mismo, también cada actividad guardará su propio estado.

  2. Tener una actividad y muchas vistas, y lo que cambio de vista en cada cambio de pantalla, esto me ayuda a reutilizar más código, pero hace que guardar estados sea un desastre.

¿Qué te parece? ¿Cuál es la mejor manera de hacer esto en Android?

¿Fue útil?

Solución

Sugiero ir con 2, ya que se ajusta al objetivo de las actividades y puntos de vista. Guardar el estado en este caso es fácil: si usa el patrón MVC, simplemente puede tener un objeto modelo que se pasa a las vistas. Cada vista tendrá partes del modelo que puede leer / escribir. No importa dónde se encuentre, el modelo siempre debe tener el estado actual. Si te deshaces, solo guarda el modelo. La restauración funciona automáticamente ya que ya leyó del modelo cuando muestra cada página.

Otros consejos

He desarrollado una biblioteca de Android liviana, que se basa en ViewPager de Android que se puede usar para crear actividades similares a las de un asistente. Compruébalo: WizarDroid .

He seguido el primer enfoque, ya que parece más natural. Otra aplicación usa ViewFlipper para cambiar de vista, pero eso está lejos de ser un asistente.

Creo que 2 es mejor. Ponga cada " página " en una vista y luego simplemente alternar entre mostrarlos y ocultarlos. Hace que sea trivial hacer buenas transiciones. ¿Qué estado estás pensando en mantener? El único que no funciona automáticamente sería el foco y creo que probablemente desee restablecerlo cada vez que cambie de página. También es trivial recuperarse si cree que ese es el comportamiento correcto para su aplicación.

Con 1 puede reutilizar casi todo su código (solo defina su propia clase WizardBase), pero creo que las actividades son mucho más lentas de iniciar (y requieren más memoria) que cambiar de vista.

Hace 9 años, obviamente, esta era una caldera de pescado muy diferente, pero creo que la mejor manera de hacerlo ahora es con Fragments.

Tenga un Fragmento para cada 'página' en el asistente, permitiéndole manejar su propio ciclo de vida y estado.

Cambiar página desde cada Fragmento con Fragment.getFragmentManager ( ) : esto devuelve el FragmentManager de la Actividad principal, permitiendo que el Fragmento se reemplace a sí mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top