Souvent, nous voulons activer une activité à partir d'une autre activité. Bien que ce ne soit pas une tâche difficile, il faudra un peu plus de réglages à faire que les recettes précédentes car cela nécessite deux activités. Nous allons créer deux classes d'activités et les déclarer toutes les deux dans le manifeste. Nous allons également créer un bouton, comme nous l'avons fait dans la recette précédente, pour passer à l'activité.

 

Se préparer
Nous allons créer un nouveau projet dans Android Studio, comme nous l'avons fait dans les recettes précédentes, et appelons ceci un ActivitySwitcher. Android Studio créera la première activité, ActivityMain, et la déclarera automatiquement dans le manifeste.

Comment faire...
1. Comme l'assistant Android Studio New Project a déjà créé la première activité, il suffit de créer la deuxième activité. Ouvrez le projet ActivitySwitcher et accédez à Fichier | Nouveau | Activité | Activité vide, comme indiqué dans cette capture d'écran:
2. Dans la boîte de dialogue Personnaliser l'activité, vous pouvez laisser le nom d'activité par défaut tel qu'il est, à savoir Main2Activity, ou le remplacer par SecondActivity, comme indiqué ici:
3. Ouvrez le fichier MainActivity.java et ajoutez la fonction suivante:
public void onClickSwitchActivity (Voir la vue) {
Intention intention = nouvelle intention (this, SecondActivity.class); startActivity (intention);
}
4. Maintenant, ouvrez le fichier activity_main.xml situé dans le dossier \ res \ layout et ajoutez le code XML suivant pour créer le bouton:
<Bouton
android: id = "@ + id / bouton"
android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
- \ J2
android: layout_centerVertical = "vrai" android: layout_centerHorizontal = "true" android: text = "Lancer SecondActivity" android: onClick = "onClickSwitchActivity" />
5. Vous pouvez réellement exécuter le code à ce stade et voir la deuxième activité venir. Nous allons aller plus loin et ajouter un bouton à SecondActivity pour le fermer, ce qui nous ramènera à la première activité. Ouvrez le fichier SecondActivity.java et ajoutez cette fonction:
public void onClickClose (Voir la vue) {finish ();
}
6. Enfin, ajoutez le bouton Fermer à la disposition SecondActivity. Ouvrez le fichier activity_second.xml et ajoutez l'élément <Button> suivant juste après l'élément <TextView> généré automatiquement:
<Bouton
android: id = "@ + id / buttonClose"
android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: text = "Fermer"
android: layout_centerVertical = "vrai"
android: layout_centerHorizontal = "vrai"
android: onClick = "onClickFermer" />
7. Exécutez l'application sur votre appareil ou votre émulateur et voyez les boutons en action.

Comment ça marche...
Le vrai travail de cet exercice est dans la méthode onClickSwitchActivity () de l'étape 3. C'est là que nous déclarons la deuxième activité pour l'intention en utilisant SecondActivity.class. Nous sommes allés plus loin en ajoutant le bouton de fermeture à la deuxième activité pour montrer une situation commune dans le monde réel: lancer une nouvelle activité, puis la fermer et revenir à l'activité d'appel d'origine. Ce comportement est accompli dans la fonction onClickClose (). Tout ce qu'il fait est appelez finish (), mais cela indique au système que nous en avons fini avec l'activité. Terminer ne nous renvoie pas réellement à l'activité d'appel ou aucune activité spécifique d'ailleurs; il ferme juste l'activité actuelle et repose sur la pile arrière. Si nous voulons une activité spécifique, nous pouvons à nouveau utiliser l'objet d'intention (nous changeons juste le nom de la classe en créant l'intention).
Cette commutation d'activité ne constitue pas une application très intéressante. Notre activité ne fait que démontrer comment passer d'une activité à une autre, ce qui bien sûr constituera un aspect fondamental de presque toutes les applications que nous développons.
Olh
Si nous avions créé manuellement les activités, nous aurions besoin de les ajouter au manifeste. En utilisant ces étapes, Android Studio a déjà pris en charge le format XML. Pour voir ce que fait Android Studio, ouvrez le fichier AndroidManifest.xml et regardez l'élément <application>:
<activité
android: name = ". MainActivity"
android: label = "@ chaîne / app_name">
<intention-filter>
<action android: nom = "android.intent.action.MAIN" />
<catégorie android: name = "android.intent.category.LAUNCHER /> </ intent-filter>
</ activité>
<activité
android: name = ". SecondActivity"
android: label = "@ chaîne / titre_activité_second">
</ activité>
Une chose à noter dans le code autogénéré précédent est que la seconde activité n'a pas l'élément <intention-filter>. L'activité principale est généralement le point d'entrée au démarrage de l'application. C'est pourquoi MAIN et LAUNCHER sont définis, afin que le système sache quelle activité lancer lorsque l'application démarre.

Voir également
► Pour en savoir plus sur l'intégration de widgets tels que le bouton, reportez-vous au chapitre 3, Vues, ​​widgets et styles.