TP #1 : Initiation au développement sur Android

TP #1 : Initiation au développement sur Android

Public cible

M2 SIR, M2 SIR appliqué (réseaux)

Configuration de l'environnement

L'environnement de développement Eclipse avec le plug-in ADT est pré-installé sur les postes des salles TPR2 et TPR3. Sélectionnez le profil de TP nommé TP_ANDROID (accessible via l'onglet « Les TP »). Pour lancer Eclipse, exécutez la commande suivante dans un terminal :

./adt-bundle-linux-x86_20131030/eclipse/eclipse

Objectif

Ce TP vous permet de reproduire partiellement la démonstration vue en cours. Vous pouvez consulter le tutoriel officiel Android pour vous guider : training/basics/firstapp.

Hommage à K&R (Hello World)

Créez un nouveau projet Android en suivant ces étapes :

  • Cliquez sur New Android Application Project
  • Nom du projet : Bonjour
  • Nom du package : fr.univlyon1.nautibus.bonjour
  • SDK minimum requis : API 14 (Ice Cream Sandwich)
  • Validez avec Next, choisissez Blank Activity, puis Next et Finish

Création d'un AVD (Android Virtual Device)

Ouvrez l'AVD Manager et configurez un nouvel appareil virtuel. Pour optimiser les performances, activez l'option Use host GPU.

Modification du texte d'accueil

Éditez le fichier res/values/strings.xml et remplacez Hello world par Bonjour monde.

Utilisation de Logcat pour les messages de log

Ajoutez la ligne suivante dans la méthode onCreate() de votre activité principale :

Log.i("myTAG", "onCreate est lancé");

Astuce : Pour importer un package manquant, utilisez la combinaison de touches Shift+Cmd+O.

Interface graphique simple

Modifiez le fichier activity_main.xml pour ajouter un champ de texte (EditText) et un bouton (Button).

Pour éviter un avertissement (warning) lié au texte "hardcodé" du bouton, placez-le dans le fichier res/values/strings.xml avec l'attribut android:text="@string/button1".

Exemple de déclaration dans strings.xml :

<string name="button1">Envoie</string>

Astuce : Utilisez un clic droit sur le champ EditText pour ajouter un "hint" (exemple : Votre nom ?).

Association d'une méthode au bouton

Dans le fichier activity_main.xml, ajoutez l'attribut android:onClick="sendMessage" au bouton.

Définissez la méthode sendMessage dans MainActivity.java comme suit :

public void sendMessage(View view) {

Log.i("Bonjour", "Clic !");

}

Remarque : La méthode doit être publique, retourner void et accepter un paramètre de type View (le bouton).

Utilisation des Intents pour passer des données entre activités

Un Intent est un objet permettant de lier deux composants d'une application (comme deux activités). Il représente l'action que l'application souhaite exécuter, souvent pour démarrer une autre activité.

Dans la méthode sendMessage(), créez un Intent pour lancer une nouvelle activité nommée DisplayMessageActivity :

Intent intent = new Intent(this, DisplayMessageActivity.class);

Exécutez l'Intent avec startActivity(intent).

Création de la seconde activité

Générez une nouvelle activité en suivant ces étapes :

  • Cliquez sur New > Other > Android Activity
  • Sélectionnez Blank Activity
  • Nom de l'activité : DisplayMessageActivity
  • Parent hiérarchique : fr.univlyon1.nautibus.bonjour.MainActivity

Supprimez les méthodes onCreateOptionsMenu() et onOptionsItemSelected() si elles sont présentes.

Transmission d'un message entre activités

Pour transmettre un message depuis MainActivity vers DisplayMessageActivity, utilisez les Extras de l'Intent.

Déclarez une constante publique en haut de la classe MainActivity :

public final static String EXTRA_MESSAGE = "fr.univlyon1.nautibus.bonjour.MESSAGE";

Dans la méthode sendMessage(), récupérez le texte saisi par l'utilisateur dans le champ EditText et ajoutez-le à l'Intent :

EditText editText = (EditText) findViewById(R.id.editText1);

String message = editText.getText().toString();

intent.putExtra(EXTRA_MESSAGE, message);

startActivity(intent);

Récupération du message dans l'activité cible

Dans la méthode onCreate() de DisplayMessageActivity, récupérez le message transmis via l'Intent :

Intent intent = getIntent();

String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

Log.i("Bonjour", "Message reçu : " + message);

Pour afficher le message dans un TextView, utilisez soit le layout existant (ajoutez un identifiant android:id="@+id/tv_message"), soit créez un nouveau TextView en code Java :

TextView tv = (TextView) findViewById(R.id.tv_message);

tv.setText("Bonjour " + message);

Ou, en créant directement le TextView :

TextView tv = new TextView(this);

tv.setTextSize(40);

tv.setText("Bonjour " + message);

setContentView(tv); // N'oubliez pas de commenter le setContentView initial.

Modification du menu (optionnel)

Si le temps le permet, modifiez le menu de la MainActivity pour afficher "About" au lieu de "Settings".

Éditez le fichier res/menu/main.xml et ajoutez une méthode de callback pour gérer la sélection du menu :

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.action_settings:

Log.i("Bonjour", "About menu has been selected!");

Toast.makeText(getBaseContext(), "Bonjour by VotreNom (c) 2014", Toast.LENGTH_SHORT).show();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

FAQ

1. Pourquoi utiliser un EditText avec un hint ?

Un hint est un texte d'aide qui s'affiche dans le champ EditText tant qu'il n'est pas rempli. Cela guide l'utilisateur sur ce qu'il doit entrer sans bloquer l'affichage du texte saisi.

2. Que faire si l'Intent ne fonctionne pas ?

Vérifiez que le nom de la classe cible est correctement orthographié et que l'activité est déclarée dans le fichier AndroidManifest.xml. Assurez-vous aussi que l'Intent est bien passé à startActivity().

3. Comment éviter le warning lié au texte "hardcodé" du bouton ?

Déplacez le texte dans le fichier strings.xml et utilisez l'attribut android:text="@string/nom_du_string" dans le layout XML du bouton.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne