Esto es lo que yo personalmente hice para uno de mis pequeños proyectos móviles. En lugar de crear una por separado, pantalla-menos Activity
donde la condición es y que pone en marcha la pantalla correspondiente, puse la condición en una Activity
e hice una dinámica setContentView()
, como en:
if (!userIsLoggedIn) {
setContentView(R.layout.signup);
} else {
setContentView(R.layout.homescreen);
}
Dos notas importantes a este enfoque :
1: En lugar de escribir eso en onCreate()
, desea poner la toma de decisiones dentro de onResume()
precisamente porque este último siempre se invoca cuando la pantalla debe mostrarse al frente. Puedes ver eso desde Android activity life cycle. Entonces, si, por ejemplo, el usuario acaba de descargar mi aplicación y la lanzó por primera vez, porque ningún usuario ha iniciado sesión, se le dirigirá a la página de registro. Cuando termine de registrarse y por algún motivo presiona el botón HOME
(no BACK
, que sale de la aplicación por completo) y luego reanuda la aplicación, el diseño que verá ya es la pantalla de inicio. Si pongo el condicional dentro de onCreate()
, lo que se habría mostrado es la pantalla de registro porque, de acuerdo con el ciclo de vida, no vuelve a onCreate()
cuando trae de vuelta una aplicación al frente.
2: Esta solución es ideal solo si fusionar las funcionalidades de esas dos actividades no produciría un bloque de código largo y diabólico. Como dije, mi proyecto era pequeño (su función principal ocurre en segundo plano), por lo que el único Activity
dinámico no tenía demasiado. La pantalla sin pantalla Activity
es definitivamente el camino a seguir si necesita que su código sea más legible.
exactamente lo que busqué, gracias por preguntar esto ya. – mad