2010-07-08 18 views
7

Estoy trabajando en una aplicación para Android que tiene varias pantallas en las que el usuario deberá navegar y tengo curiosidad por saber cuáles son las mejores prácticas al cambiar entre esas pantallas. Estoy dividido entre crear una nueva actividad para cada pantalla y simplemente cambiar la vista (setContentView (R.layout.whatever)). Todas las pantallas comparten al menos algunos valores variables, por lo que me inclino por cambiar las vistas y usar variables de nivel de clase, pero me preocupa que una sola actividad pueda volverse muy grande y confusa con lógica para múltiples pantallas en un solo archivo. Me gustaría mantener el código limpio y separado, pero tampoco quiero pasar varias variables entre vistas si eso no es necesario.Android - Actividades vs Vistas

Siendo nuevo en el desarrollo de Android, espero que algunos miembros más experimentados de la comunidad puedan compartir sus ideas y dejarme saber cómo manejarlo.

Gracias!

Nota: No tenía planeado usar un viewflipper. Mi idea era utilizar un evento de clic de botón y luego llamar a setContentView() a una nueva vista para la página que quería mostrar a continuación.

Ejemplo: Mi aplicación se inicia con R.layout.main como se ve. El usuario hace clic en el botón Ayuda y llama a un método que ejecuta setContentView (R.layout.help); para mostrar la pantalla de ayuda en lugar de cambiar a una actividad de ayuda.

Respuesta

9

Debe usar una actividad por pantalla, ya que hará el mejor uso del marco y permitirá que el sistema operativo elimine selectivamente las pantallas si las cosas se ponen difíciles.

Si tiene una sola actividad y recursos limitados, el sistema operativo tiene dos opciones; mata todo o no mata nada, y si el usuario no está usando tu aplicación, es muy probable que mate todo.

Si utiliza una Actividad por pantalla, el sistema operativo puede matar algunas de las pantallas que el usuario no ha visitado por un tiempo, mientras permite que otras permanezcan activas lo que permite al usuario volver a ellas rápidamente.

En cuanto al intercambio de variables y valores, puede usar la base de datos SQLite o las tiendas SharedPreferences para pasarlas si se comparten ampliamente, o usar los métodos putExtra en Intent si solo se usan de una pantalla a la siguiente .

+1

Entonces, si tienes un juego con tres pantallas: tablero, opciones y registros; ¿Quieres decir que deberíamos tener 3 actividades? De Verdad? ¡No llamaría a una pantalla de registros "una actividad"! :-( – cibercitizen1

+1

Cuando el usuario está viendo los registros, no están jugando en el tablero de juego o seleccionando entre opciones, así que sí, la pantalla de registros sería una actividad separada. –

0

Si tiene variables que reutilizará, haga una clase base para ellas, que ampliará.

Esta puede ser una actividad personalizada que se extiende Activity.

Hasta donde puedo decir que tiene que crear actividades separadas para cada vista, viewflippers solo puede manejar algunas situaciones.

+0

Puede que no entienda bien, pero no estaba planeando usar un viewflipper. Agregué una nota a mi pregunta original para (con suerte) explicarme más claramente. – Mike

Cuestiones relacionadas