Ecco quello che ho personalmente fatto per uno dei miei piccoli progetti di telefonia mobile. Invece di creare un separato, screen-meno Activity
in cui la condizione è e che lancia la schermata corrispondente, ho messo la condizione in una Activity
e ha fatto una dinamica setContentView()
, come in:
if (!userIsLoggedIn) {
setContentView(R.layout.signup);
} else {
setContentView(R.layout.homescreen);
}
Due note importanti di questo approccio :
1: Invece di scrivere quello in onCreate()
, si desidera mettere il processo decisionale all'interno di onResume()
proprio perché quest'ultimo viene sempre chiamato ogni volta che lo schermo deve essere visualizzato in primo piano. Lo puoi vedere da Android activity life cycle. Quindi, se, ad esempio, l'utente ha appena scaricato la mia app e l'ha lanciata per la prima volta, poiché nessun utente ha effettuato l'accesso, verrà indirizzata alla pagina di registrazione. Quando ha terminato la registrazione e per qualche motivo preme il pulsante HOME
(non BACK
, che chiude completamente l'app!) E quindi riprende l'app, il layout che vedrà sarà già la schermata principale. Se inserisco il condizionale all'interno di onCreate()
, quello che sarebbe stato visualizzato è lo schermo di registrazione perché, in base al ciclo di vita, non torna a onCreate()
quando si riporta in primo piano un'app.
2: questa soluzione è ideale solo se la fusione delle funzionalità di queste due attività non produrrebbe un lungo blocco diabolico di codice. Come ho detto, il mio progetto era di dimensioni ridotte (la sua caratteristica principale si verifica in background), quindi la singola dinamica Activity
non ne conteneva troppo. Lo screen-less Activity
è sicuramente la soluzione ideale se hai bisogno che il tuo codice sia più leggibile.
fonte
2012-08-03 12:29:37
esattamente quello che ho cercato, grazie per averlo già chiesto. – mad