Cambiar los archivos de diseño en la misma actividad

Estoy utilizando setContentView(R.layout.main) para cambiar las vistas en la misma actividad. Estoy llamando a alguna tarea asíncrona y setContentView(R.layout.main) los datos en el archivo de diseño principal después de que estoy cambiando la vista llamando al setContentView(R.layout.main) .

Llegué a saber que no deberíamos usar el método setContentView varias veces para la misma actividad. Aunque está funcionando bien para mí.

¿Puede alguien explicar por qué no deberíamos usar el método setContentView varias veces para que la misma actividad cambie las vistas?

¿Creará alguna excepción relacionada con la memoria? ¿Puede aclarar alguien por favor?

3 Solutions collect form web for “Cambiar los archivos de diseño en la misma actividad”

Creo que cambiar de vista no es una buena idea, porque la plataforma androide ya tiene un marco fuerte para manejar la transición entre las vistas y mantener el estado de cada vista asociada con la actividad siempre es mejor quedarse con el marco existente en lugar de pensar en algunos Compleja que tiene que pasar para hacer todas estas cosas. Si usted no necesita ninguna de estas cosas a cuidado en su aplicación y si sólo si tiene sólo dos o tres pantallas en su aplicación entera puede intentar cambiar las vistas. Que incluso basado en cómo sus vistas se estructuran si usted tiene lógica compleja y la porción de datos necesarios crear estas opiniones esto no será una buena manera de hacerlo. Una cosa más si usted está agregando más opiniónes dice la funcionalidad a su uso la carga que Necesidad de ser manejado por la actividad va a ir alto. En este caso, usted declarará e inicializará todas las vistas dentro de esa actividad en particular, por lo que mantener todas estas instancias de vistas es pesado. Si quieres saber más sobre Activty y Task, envía este enlace

Bueno, cada vez que llame a setContentView () usted tendrá que encontrar todos los diseños de nuevo, además de que creo que "puede" hacerlo. Pero como se discute aquí esto es mal aconsejado, ya que claramente va en contra de las directrices de Android. También Commonsware tiene algunos puntos muy importantes aquí uno de los más importantes es que usted será propenso a la memoria de fugas como se olvida de limpiar cosas de sus puntos de vista, etc que Android normalmente manejaría para usted.

En resumen, debe seguir las pautas de Android y utilizar Fragmentos o iniciar una nueva Activity .

De acuerdo con el desarrollador docs setContentView (int layoutResID) se utiliza para

Establezca el contenido de la actividad de un recurso de diseño. El recurso se inflará, agregando todas las vistas de nivel superior a la actividad.

En la mejor práctica este método se utiliza para inflar su disposición de la Activity en la puesta en marcha. Esto no significa que causará problemas en el futuro si sigue usando este método. Para citar una respuesta en esta pregunta

El setContentView en su actividad en realidad llama a la setContentView en la ventana utilizada por la actividad, que en sí hace mucho más que simplemente inflar el diseño.

Le sugiero que encuentre una forma alternativa de cambiar diseños como usar un ViewPager con Fragments o algún otro enfoque Tabbing, pero al final todo se reduce a lo que quiere hacer.

Esta pregunta también podría darle lo que está buscando.

  • ¿Cómo usar la vista propia en el diseño?
  • Aplicación de pantalla completa en Android: ¿una buena práctica?
  • Android: ¿Cómo obtener una vista dada una actividad dentro de una clase normal?
  • Cómo envolver los botones de imagen en un diseño lineal horizontal?
  • Haga mi estilo del botón como el botón del AlertDialog Estilo
  • El banner de adMob cubre la vista de texto cuando aparece el teclado virtual
  • Agregar sombra debajo TabBar - Diseño de material
  • Material Tema Android Action Bar Estilo Generador
  • Implementación de un ListView multicolumna con Row-heights independientes
  • Altura mínima del botón de Android: 48dp = 9mm?
  • No se puede obtener elemento del diseño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.