Introduction à android

Cette partie  couvre les recettes suivantes:
► Déclaration d'une activité
► Démarrer une nouvelle activité avec un objet d'intention
► Passer d'une activité à l'autre
► Transmettre des données à une autre activité
► Renvoyer un résultat d'une activité
► Sauvegarde de l'état d'une activité
► Stockage des données d'activité persistante
► Comprendre le cycle de vie de l'activité

Le SDK Android fournit un outil puissant pour programmer des appareils mobiles, et la meilleure façon de maîtriser un tel outil est de sauter droit po Bien que vous puissiez lire ce livre du début à la fin, comme c'est un livre de cuisine, il est spécialement conçu pour permettre vous pouvez sauter à des tâches spécifiques et obtenir les résultats immédiatement.
Les activités constituent le bloc de construction fondamental de la plupart des applications Android car la classe d'activité fournit l'interface entre l'application et l'écran. La plupart des applications Android auront au moins une activité, voire plusieurs (mais elles ne sont pas obligatoires). Une application de service d'arrière-plan n'exigera pas nécessairement une activité s'il n'y a pas d'interface utilisateur.
Ce chapitre explique comment déclarer et lancer des activités au sein d'une application et comment gérer plusieurs activités à la fois en partageant des données entre elles, en leur demandant des résultats et en appelant une activité à partir d'une autre.
Ce chapitre explore également brièvement l'objet de l'intention, qui est souvent utilisé en conjonction avec des activités. Les intentions peuvent être utilisées pour transférer des données entre des activités dans votre propre application, ainsi que dans des applications externes, telles que celles incluses avec le système d'exploitation Android (un exemple courant serait d'utiliser l'intention de lancer le navigateur Web par défaut).
Pour commencer à développer des applications Android, accédez à la page Android Studio pour télécharger le nouvel IDE Android Studio et le kit SDK Android:
http://developer.android.com/sdk/index.html

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.

Le modèle d'application Android peut être considéré comme orienté services, avec des activités en tant que composants et intentions que les messages envoyés entre eux. Ici, une intention est utilisée pour démarrer une activité qui affiche le journal des appels de l'utilisateur, mais les intentions peuvent être utilisées pour faire beaucoup de choses et nous les rencontrerons tout au long de ce livre.

 

Se préparer
Pour simplifier les choses, nous allons utiliser un objet d'intention pour démarrer l'une des applications intégrées d'Android plutôt que d'en créer une nouvelle. Cela ne nécessite qu'une application très basique, alors lancez un nouveau projet Android avec Android Studio et appelez-le ActivityStarter.

Comment faire...
Encore une fois, pour garder l'exemple simple afin que nous puissions nous concentrer sur la tâche à accomplir, nous allons créer une fonction pour montrer une intention en action et appeler cette fonction à partir d'un bouton sur notre activité.
Une fois votre nouveau projet créé dans Android Studio, procédez comme suit:
1. Ouvrez la classe MainActivity.java et ajoutez la fonction suivante:
public void launchIntent (Afficher la vue) {
Intention intention = nouvelle intention (Intent.ACTION_VIEW);
https://www.packtpub.com/")); ">intention.setData (Uri.parse ("https://www.packtpub.com/"));
startActivity (intention);
}
Pendant que vous tapez ce code, Android Studio affiche cet avertissement sur Affichage et intention: Impossible de résoudre le symbole "Intention".
Cela signifie que vous devez ajouter la référence de bibliothèque au projet. Vous pouvez le faire manuellement en entrant le code suivant dans la section d'importation:
import android.view.View; import android.content.Intent;
Alternativement, il suffit de cliquer sur les mots (dans la police rouge), appuyez sur Alt + Entrée, et laissez Android Studio ajouter la référence de la bibliothèque pour vous.
2. Ouvrez le fichier activity_main.xml et ajoutez le code XML suivant:
<Bouton
android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Lancer le navigateur"
HZ]
android: id = "@ + id / bouton"
android: layout_centerVertical = "vrai"
android: layout_centerHorizontal = "vrai"
android: onClick = "launchIntent" />
3. Maintenant, il est temps de lancer l'application et voir l'intention en action. Vous devrez soit créer un émulateur Android (dans Android Studio, allez dans Outils | Android | Gestionnaire AVD), soit connecter un périphérique physique à votre ordinateur.
4. Lorsque vous appuyez sur le bouton Lancer le navigateur, le navigateur Web par défaut s'ouvre avec l'URL spécifiée.

Comment ça marche...
Bien que simple, cette application démontre une grande partie de la puissance derrière le système d'exploitation Android. L'objet d'intention est juste un objet de message. Les intentions peuvent être utilisées pour communiquer à travers les composants de votre application (tels que les services et les récepteurs de diffusion) ainsi qu'avec d'autres applications sur l'appareil (comme nous l'avons fait dans cette recette).
Pour tester sur un périphérique physique, vous devrez peut-être installer des pilotes pour votre périphérique (les pilotes sont spécifiques au fabricant du matériel). Vous devrez également activer le mode développeur sur votre appareil. L'activation du mode développeur varie en fonction de la version du système d'exploitation Android. Si vous ne voyez pas l'option Mode développeur dans les paramètres de votre appareil, ouvrez l'option À propos du téléphone et commencez à taper Numéro de build. Après trois taps, vous devriez voir un message Toast vous indiquant que vous êtes sur le point d'être développeur. Quatre autres robinets permettront l'option.
Olh

 
Dans cette recette, nous avons créé un objet d'intention en spécifiant ACTION_VIEW comme ce que nous voulons faire (notre intention). Vous avez peut-être remarqué que lorsque vous avez tapé Intent et ensuite la période, Android Studio a fourni une liste de possibilités (il s'agit de la fonctionnalité de saisie semi-automatique), comme ceci:
ACTION_VIEW, avec une URL dans les données, indique que l'intention est d'afficher le site Web, de sorte que le navigateur par défaut est lancé (différentes données pourraient lancer des applications différentes). Dans cet exemple, notre intention est simplement d'afficher l'URL, donc nous appelons l'intention avec juste la méthode startActivity (). Il existe d'autres façons d'appeler l'intention en fonction de nos besoins. Dans le retour d'un résultat d'une recette d'activité, nous allons utiliser la méthode startActivityForResult ().

Il y a plus...
Il est très fréquent que les utilisateurs d'Android téléchargent leurs applications préférées pour la navigation sur le Web, la prise de photos, la messagerie texte, etc. Grâce aux intentions, vous pouvez laisser votre application utiliser les applications préférées de votre utilisateur au lieu d'essayer de réinventer toutes ces fonctionnalités.

Voir également
Pour démarrer une activité à partir d'une sélection de menu, reportez-vous à la recette des sélections du menu Traitement dans le chapitre 4, Menus.

Les activités et autres composants d'application, tels que les services, sont déclarés dans le fichier XML AndroidManifest. La déclaration d'une activité est la façon dont nous informons le système de notre activité et de la manière dont elle peut être demandée. Par exemple, une application indique généralement qu'au moins une activité doit être visible en tant qu'icône de bureau et servir de point d'entrée principal à l'application.


Se préparer
Android Studio est le nouvel outil utilisé pour développer des applications Android, remplaçant la solution Eclipse ADT désormais obsolète. Android Studio sera utilisé pour toutes les recettes présentées dans ce livre, donc si vous ne l'avez pas déjà installé, visitez le site Web Android Studio (le lien a été fourni plus tôt) pour installer l'IDE et le kit SDK.


Comment faire...
Pour ce premier exemple, nous vous guiderons dans la création d'un nouveau projet. Android Studio fournit un assistant de démarrage rapide qui facilite grandement le processus. Suivez ces étapes pour commencer:
1. Lancez Android Studio, qui affiche la boîte de dialogue Bienvenue dans Android Studio.
2. Cliquez sur l'option Démarrer un nouveau projet Android Studio.
3. Entrez un nom d'application; Pour cet exemple, nous avons utilisé DeclareAnActivity. Cliquez sur Suivant.
4. Dans la boîte de dialogue Ajouter une activité à un mobile, cliquez sur le bouton Activité vide, puis sur Suivant.
5. Dans la boîte de dialogue Cibler les appareils Android, choisissez Android 6.0 (API 23) comme SDK minimum (pour cet exemple, le niveau d'API choisi n'a pas vraiment d'importance, car les activités existent depuis le niveau d'API 1, mais en choisissant les dernières la libération est considérée comme la meilleure pratique). Cliquez sur Suivant.
-ré}
6. Comme nous avons choisi auparavant l'option Activité vide, la boîte de dialogue Personnaliser l'activité s'affiche. Vous pouvez laisser les valeurs par défaut comme indiqué, mais notez que le nom de l'activité par défaut est
Activité principale. Cliquez sur Terminer.
Après avoir terminé l'assistant, Android Studio créera les fichiers du projet. Pour cette recette, les deux fichiers que nous allons examiner sont MainActivity.java (qui correspond au nom d'activité mentionné à l'étape 6) et AndroidManifest.xml.
Si vous jetez un coup d'oeil au fichier MainActivity.java, vous vous rendrez compte que c'est assez basique. C'est parce que nous avons choisi l'option Activité vide (à l'étape 4). Maintenant, regardez le AndroidManifest. fichier xml. C'est ici que nous déclarons l'activité. Dans l'élément <application>, l'élément <activity>:
<activité
android: name = ". MainActivity"
android: label = "@ chaîne / app_name">
<intention-filter>
<action android: nom = "android.intent.action.MAIN" /> <catégorie android: nom =
"android.intent.category.LAUNCHER" />
</ intent-filter>
</ activité>
Lorsque vous affichez ce fichier XML dans Android Studio, vous pouvez remarquer que l'élément label affiche le texte tel qu'il est défini dans le fichier de ressources strings.xml. Ceci est juste un petit exemple d'améliorations dans le nouvel IDE.


Comment ça marche...
La déclaration d'une activité consiste simplement à déclarer l'élément <activity> et à spécifier le nom de la classe d'activité avec l'attribut android: name. En ajoutant l'élément <activity> au manifeste Android, nous spécifions notre intention d'inclure ce composant dans notre application. Toutes les activités (ou tout autre élément d'ailleurs) qui ne sont pas déclarées dans le manifeste ne seront pas incluses dans la demande. Si vous tentez d'accéder ou d'utiliser un composant non déclaré, une exception sera levée lors de l'exécution.
Dans le code précédent, il existe un autre attribut-android: label. Cet attribut indique le titre affiché à l'écran ainsi que l'étiquette de l'icône s'il s'agit de l'activité Lanceur.
Pour une liste complète des attributs d'application disponibles, consultez cette ressource:
http://developer.android.com/guide/topics/
manifest / activity-element.html
m-