Dynamique de début de l'activité dans Android?
Est-il un moyen de modifier dynamiquement le démarrage de l'activité dans Android basé sur une condition? Ce que j'ai tenté de le faire (qui ne fonctionne pas) était la suivante:
- supprimer le LANCEUR catégorie telles que définies dans mon AndroidManifest.xml
- créer une Application personnalisée de classe que l'application utilise
- remplacer la méthode onCreate de ma classe d'Application pour définir un code semblable au suivant:
.
if (condition) {
startActivity(new Intent(this, MenuActivity.class));
} else {
startActivity(new Intent(this, LoginActivity.class));
}
- exactement ce que je recherche, merci de poser cette déjà.
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas avoir un premier
Activity
sans INTERFACE utilisateur qui vérifie la condition dans saonCreate
, puis lance la prochaineActivity
, puis appellefinish()
sur lui-même? Je n'ai jamais appeléfinish()
de l'intérieuronCreate()
bien, alors je ne sais pas si cela va fonctionner.MODIFIER
Semble bien fonctionner. Voici un code pour le rendre plus clair.
Initiale
Activity
:Autres
Activity
:Application
'sonCreate
sans déclaration de l'activité dans le manifeste. Il aurait été plus propre pour MVC approches à mon humble avis.setContentView
. Le titre vient deAndroidManifest.xml
.set
ContenuView
"... si vous n'avez pas défini le contenu, mais l'Activity
a encore unWindow
, qui contient plus de lacontentView
.Window
doit être créé à tous les.Voici ce que j'ai fait personnellement pour l'un de mes petits projets mobiles. Au lieu de créer un écran de moins
Activity
où la condition est et qui lance l'écran correspondant, j'ai mis de l'état dans unActivity
et a une dynamiquesetContentView()
, comme dans:Deux remarques importantes à cette approche:
1: au Lieu d'écrire que dans
onCreate()
, vous souhaitez mettre de la prise de décision à l'intérieur deonResume()
précisément parce que ce dernier est toujours appelée chaque fois que l'écran doit être affiché dans l'avant. Vous pouvez voir qu'à partir de l'Android l'activité du cycle de vie. Donc, si, par exemple, l'utilisateur viens de télécharger mon application et lancé pour la première fois, car aucun utilisateur n'est connecté, elle sera conduit à la page d'inscription. Quand elle fait de la signature et pour une raison quelconque presses de l'HOME
bouton (pasBACK
, qui permet de quitter l'application en tout!) et reprend ensuite l'application, la mise en page qu'elle va voir, c'est déjà l'écran d'accueil de l'. Si je mets le conditionnel à l'intérieur deonCreate()
, ce qui aurait été affiché est le signe de l'écran parce que, selon le cycle de vie, il ne rentre pas dansonCreate()
lors de la ramener à une application de l'avant.2: Cette solution est idéale seulement si vous fusionnez les fonctionnalités de ces deux Activités ne serait pas produire un long diabolique bloc de code. Comme je l'ai dit, mon projet était petite (sa principale caractéristique se produit en arrière-plan), de sorte que seule dynamique
Activity
n'a pas eu trop à elle. L'écran moinsActivity
est certainement la voie à suivre si vous avez besoin de votre code plus lisible.Fragment
s qui encapsule lecontentView
et la "largement différentes de code sous-jacent".