studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android view android-activity viewgroup

android - programacion - ¿Creando una copia de una Vista?



manual de programacion android pdf (5)

Crea una clase que contenga la configuración de tu grupo de vista. Deje que esta clase de configuración contenga toda la información relacionada con su ViewGroup. Retendrá los textos, los colores, las dimensiones, el orden y todo lo que el usuario ha cambiado. Pase el objeto de esta clase de la Actividad A a la Actividad B y, usando esto, reproduzca la misma vista inflando el mismo diseño.

Espero que ayude.

Y para responder a su pregunta, no hay otra manera fácil de hacerlo.

Tengo 2 Actividades: A, B. Presentación de la Actividad A, tiene un grupo de vistas que el usuario cambia su contenido. En la Actividad B, tengo que volver a mostrar ese grupo de vistas, sin ningún cambio, debe ser una copia real de ese grupo de vistas, por lo que textos, colores, dimensiones, orden (del niño) y ... deben ser los mismos. Así que no puedo usar Layout Inflater Es posible sin crear clases del tipo de niños de ese grupo de vista y cambiar propiedades? Porque si tengo más de 2 Actividad con diferentes grupos de vista, es muy difícil mostrar grupos de vista de cada actividad en la última actividad.

Además, no puedo eliminar esos viewgroups de sus padres.


No es una manera fácil de hacer esto. No puedes mover vistas entre actividades. Entonces tienes varias opciones:

  • crear un mapa de bits de viewGroup y mostrar en una actividad nueva (no funciona si necesita una copia editable)
  • guarde el estado de jerarquía de la vista en la actividad anterior y recíclela en una nueva (usar fragmentos lo hace más fácil).
  • no crees nueva actividad. Simplemente cambie algunas partes de la interfaz de usuario en la anterior sin tocar el grupo de vista objetivo.

Para el ViewGroup que necesita ser compartido, refactorícelo en un Fragment llamado C. Luego cree Fragments para las secciones de Activity A y B menos esta parte compartida. Luego, contenga todos estos Fragmentos dentro de una nueva Actividad contenedora (ya no necesitará las Actividades A y B).

Los Fragmentos A y C serán la nueva Actividad A. Los Fragmentos B y C serán la nueva Actividad B. Para pasar del primer estado al segundo, realice una FragmentTransaction agregando el Fragmento B y eliminando el Fragmento A. Recuerde agregar esta transacción al apila de nuevo para que el botón Atrás te devuelva al primer estado.


Solo una duda general? ¿Por qué querría ir para dos actividades? ¿Por qué no usar dos fragmentos asignados a la misma vista? Usar la actividad subyacente para almacenar todos los cambios que suceden en uno de los fragmentos (Vista) y cuando el usuario pasa a la otra vista simplemente envíe los parámetros para el segundo fragmento. De este modo, estás emulando al usuario que se trata de dos actividades, pero en realidad son solo dos fragmentos controlados por una sola actividad.


Si su contenido será el mismo, no tiene sentido tener dos actividades diferentes. Puede cambiar dinámicamente el contenido de una actividad y el comportamiento será el mismo ya que hubo dos actividades. Si es realmente necesario, deberá guardar toda la información necesaria para reconstruir la actividad nuevamente y pasarla a la actividad recién creada. Echa un vistazo a esto .