2010-05-06 23 views
21

Estoy comenzando a Android haciendo una aplicación para buscar restaurantes, ¡y alguna orientación sería bienvenida! En la primera pantalla me gustaría tener un campo de búsqueda con un botón de enviar (obtengo los datos de un servicio web) y debajo de una lista con los resultados de la búsqueda. Al hacer clic en uno de los elementos de la lista, se mostrará una pantalla con los detalles del restaurante y un mapa que muestra su ubicación. Mis preguntas son:¿Cuántas actividades debo usar?

  • ¿Puedo hacer todo en una sola actividad o debo hacer una actividad para la búsqueda, una para la lista de resultados, una para la descripción del restaurante y otra para el mapa?
  • ¿Haría una sola actividad para que la aplicación sea más receptiva?
  • ¿Cómo puedo usar una lista y un mapa dentro de una actividad normal (sin ListActivity y MapActivity)?
+0

Hola Jul, ¿podrías intentar que el título de la pregunta sea más descriptivo? – Casebash

+0

Agregué "¿Cuántas actividades debería usar?". – jul

Respuesta

25

¿Puedo hacer todo en una sola actividad o debo hacer una actividad para la búsqueda, una para la lista de resultados, una para la descripción del restaurante y otra para el mapa?

La respuesta a esto realmente depende del flujo de su aplicación. Creo que lo más importante a tener en cuenta aquí es cómo el usuario controlará su aplicación con el botón "Atrás". Cuando creas una nueva actividad, la coloca en la pila y el usuario siempre puede presionar "volver" para sacarla de la pila.

Un extremo es poner todos estos pasos en diferentes actividades. Entonces el usuario tiene el último control usando el botón "volver", pero puede molestarse saltando alrededor de Actividades. Poner todo en una sola actividad es el otro extremo, y recomiendo mucho contra eso; los usuarios esperan que las nuevas pantallas sean una actividad diferente, una actividad que puedan "respaldar", por lo que si pone todos sus huevos en una actividad, tendrá que comenzar a manejar la "espalda" usted mismo.

Creo que hay un buen término medio que su aplicación podría tomar, aunque, por supuesto, su diseño de interfaz de usuario puede ser diferente de lo que propongo. Yo diría que puedes hacer esto en dos actividades; en el primero, tiene un campo de búsqueda en la parte superior (con un botón de enviar al lado), y debajo de ese campo de búsqueda hay un ListView que se completa con los resultados. En el segundo, usa una TabActivity, donde una pestaña es para la descripción y la otra es para el mapa. Creo que esto es ventajoso por dos razones: en la primera Actividad, el usuario ve los resultados de su búsqueda en la misma página que la búsqueda, y puede cambiar rápidamente los parámetros de búsqueda si es necesario. Y en la segunda Actividad, la tecla Atrás contiene el respaldo de un restaurante.

¿Haría una sola actividad para que la aplicación sea más receptiva?

No realmente. Las actividades toman tiempo para crear/derribar, pero no que mucho tiempo. Es mejor segmentar su aplicación de una manera lógica (para la experiencia del usuario).

¿Cómo puedo usar una lista y un mapa dentro de una actividad normal (sin ListActivity y MapActivity)?

Puede salir con un ListView dentro de una actividad normal sin ListActivity; solo incluya un ListView en el contenido de su Actividad, luego, en código, tome el ListView y configure su adaptador manualmente. Todo lo que ListActivity hace es agregar algunas prácticas funciones de contenedor para un ListView primario, pero no es necesario en absoluto.

Los mapas son una cuestión diferente. Tendrá que utilizar una MapActivity para visualizar mapas, porque MapActivity tiene una configuración especial y un código de desmontaje que debe ejecutarse. Lo siento.

+1

Muchas gracias Daniel. – jul

+0

@DanielLew ¿Sigue siendo cierto que debe usar MapActivity para visualizar un mapa? Estoy empezando en Android (usando Mono) y espero usar una vista de mapa como parte de otra actividad más completa. (Me gustaría que el usuario cambie entre vistas de mapa o de lista) –

+0

Sí, ese sigue siendo el caso. La única solución es tener toda la actividad como una actividad de mapa o usar un grupo de actividades donde uno de los niños es una actividad de mapa. (En este punto, recomiendo el primero, ya que funcionará mejor con Fragments.) –

1

Me gustaría tener una actividad con la búsqueda y la lista, luego otra que muestra los detalles del restaurante.

No creo que funcione bien con solo una actividad.

Las actividades pueden contener vistas múltiples: una sola actividad puede contener un mapa y una lista si es necesario.

+0

Gracias, intentaré con 2 actividades. – jul

1

Me gustaría añadir algunas pautas a la excelente respuesta de Daniel.

Los usuarios no pueden distinguir entre una actividad con vistas que cambian y múltiples actividades, cada una con su propia vista, hasta que presionen el botón Atrás. Por lo tanto, es bastante importante que el botón Atrás tenga un propósito natural y lógico en relación con lo que está en la pantalla cuando se presiona. El usuario nunca debe sorprenderse por lo que sucede cuando lo usa.

Por lo tanto, para cada actividad que tenga, pregúntese si el comportamiento del botón Atrás es lógico para el usuario final en todo momento. Si encuentra un escenario donde no es así, debería considerar refaccionar sus actividades, lo que podría implicar combinar dos o más actividades en una, mover algunas responsabilidades de una actividad a otra (pero mantener ambas) o incluso dividir una actividad en dos.

Crear una interfaz de usuario que se comporte lógicamente a medida que el usuario navega a su alrededor es importante, y cuanto más haga su aplicación (y cuanta más navegación haya), más importante será. El comportamiento de navegación impredecible impide que las personas aprendan a sacar lo mejor de su aplicación en el momento en que es más probable que la desinstalen, en las primeras horas después de descargarla.

0

Si está buscando escribir código modular, reutilizable y portátil, una actividad es el camino a seguir. La actividad es un concepto solo para Android. El flujo principal y la lógica comercial de cualquier aplicación bien diseñada deben ser independientes de la plataforma. La participación de actividades en su código de nivel superior relaciona su proyecto con Android, lo que va en contra de la independencia de la plataforma, un principio fundamental tanto en Java como en la programación de calidad en general.

+0

Realmente está recomendando una separación de la estructura de la interfaz de usuario de la lógica empresarial subyacente, lo cual es un excelente consejo. Sin embargo, esto no significa que deba restringirse a una sola actividad, solo que minimice el acoplamiento entre estas capas. –

+0

Una clase de envoltorio alrededor de cada actividad viene a la mente como una solución. Pero, de nuevo, las actividades se reinician según el capricho del sistema operativo, por lo que uno debe asegurarse de que todos los datos necesarios estén precargados (los objetos SharedPreferences e InstanceBundle, pero nuevamente, esos son específicos de Android). –

+0

Esto es un mal consejo de UI, los usuarios de Android esperan que diferentes ventanas estén más o menos en diferentes actividades. Este consejo es como decirle a alguien que use un JFrame para evitar la dependencia de Swing ... –