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?

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.

  • Impedir la escala de formas en una LayeredList sin utilizar Bitmap
  • Sombra de diseño simple en Android
  • Habilitar desplazamiento dentro de EditText que está en ScrollView
  • Disposición de superposición de Android encima de todas las ventanas que recibe toques
  • Android ScrollView layout (wrap_content, tamaño máximo)
  • Cambiar actionOverflowButtonStyle con appcompat v21
  • ¿Se puede añadir subcarpeta al diseño en el proyecto Eclipse Android?
  • Bloqueo de sombra de botón de acción flotante en los márgenes de vista
  • Creación de una cuadrícula como diseño en Android
  • Patrón de diseño para acceder a los mismos datos de diferentes fuentes
  • Inserción de una vista de texto en medio de una vista de imagen de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.