Telechargé par haddadi ali

TP2

publicité
Université de Kairouan
ISIG – Kairouan
Département d'Informatique
A.U. 2021/2022
TP2 – Programmation avec Android
Hela MALOUCHE
Exercice 1 :
1) Créer une application nommée « Test »
2) Modifier le layout ConstraintLayout en LinearLayout, puis supprimer tout ce qui se
rattache au tag app.
3) Insérer un champ de texte (EditText) et 3 boutons (Button) avec les IDs repectivement
btnAjout, btnSupression, btnModification, Les textes de ces boutons sont respectivement
"Ajouter", Supprimer", "Modifier".
4) Toutes les vues ont les 2 propriétés suivantes :
a. android:layout_width="match_parent"
b. android:layout_height="wrap_content"
Exercice 2 :
1) Créer une application nommée « MonApp »
2) Remplacer la balise XML androidx.constraintlayout.widget.ConstraintLayout
par LinearLayout, puis supprimer tout ce qui se rattache au tag app.
3) Rajouter l’attribut android:orientation et mettre sa valeur à “horizontal”
4) Supprimer l’élément <TextView>
5) Rajouter un champ de saisie. Rajouter un élément dans le <LinearLayout> tel que :
6) Après la modification du code que nous venons de faire, un message d’erreur sera affiché qui vous
indiquera que le symbole str_chp_saisie n’est pas connu. Proposer une solution.
7) Dans le fichier du layout rajoutez un élément <Button> tel que
- Dans le fichier strings.xml rajoutez une chaine de caractère qui s’appelle "btn_envoyer"
et qui vaut Envoi.
- Ajouter pour ce bouton l’ID : "btnEnvoi"
8) On souhaite que le champ de saisie occupe toute la largeur de l’écran qui reste après le
positionnement du bouton,
- On va spécifier un poids (layout_weight) de 1 au EditText et une largeur de 0.
9) Compilez et lancez l’application. Tapez un texte et remarquez comment la taille du champ
de saisie s’adapte à la longueur du texte.
Rappel : Notion d’Activity
Une activité est la composante principale pour une application Android. Elle représente
l’implémentation métier dans une application Android, permettant de gérer l’ensemble des vues
et ressources.
Une activité peut être avec ou sans interface utilisateur. Il est possible d’avoir plusieurs activités
dans le même programme. Elle doit toujours être déclarée dans le fichier AndroidManifest.xml.
Une activité est soumise à plusieurs évènements. Chaque événement est représenté dans une
méthode.
Les différentes méthodes de cycle de vie d’une activité sont :
• onCreate() : Cette méthode est appelée à la création d’une activité. Elle permet de
l’initialiser. C’est ici que l’interface graphique est spécifiée.
• onStart() : Cette méthode est appelée quand l’application est démarrée.
• onResume() : Cette méthode est appelée quand l’application passe (ou repasse) en avant-‐‑plan.
• onPause() : Appelée quand l’application passe en arriere--‐‑plan et qu’une autre
application se met devant.
• onStop() : Appelée quand l’application n’est plus visible.
• onRestart() : Appelée quand l’application redevient visible.
• onDestroy() : Appelée quand votre application est fermée par le système à cause d’un
manque de ressources, ou par l’utilisateur à l’utilisation d’un finish().
La figure suivante illustre le cycle de vie d’une application Android :
Il est donc permis de spécifier un comportement pour chacun de ces évènements. Pour cela, il
suffit de rajouter les méthodes correspondantes (de la même manière que pour la méthode
onCreate) déjà générée par ADT (Android Development Tools).
Exercice 4 :
1) Créer une application nommée « Test »
2) Remplacer la balise XML androidx.constraintlayout.widget.ConstraintLayout par
LinearLayout, puis supprimer tout ce qui se rattache au tag app.
3) Générer les méthodes correspondant à chacun des évènements listés dans le cycle de vie
d’une activité.
4) Nous désirons voir le comportement de l’activité pour chacun de ces évènements. Pour cela,
chaque méthode va afficher son nom.
Indication : Utiliser le code suivant pour l’affichage :
Toast helloToast = Toast.makeText(this, "message à afficher", Toast.LENGTH_LONG);
helloToast.setGravity(Gravity.CENTER, 0, 0);
helloToast.show();
5) Dans la méthode onCreate, commenter la ligne
setContentView(R.layout.main);
et la remplacer par :
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
Que constatez--‐‑vous ?
6) Annuler l’opération de la question 3).
Dans le code du fichier main.xml, ajouter un bouton et un champ de saisie. Associer un
identifiant et un titre à votre bouton :
<EditText
android:id="@+id/Saisir_value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/boutonAfficher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Afficher" />
1) Ajout d’un Comportement au bouton :
❖ Créer un attribut dans votre activité (.java) de type Button :
private Button bAfficher;
❖ Dans la méthode onCreate() :
- Initialiser l’attribut bAfficher en lui associant le bouton créé dans le main.xml :
bAfficher = (Button) findViewById(R.id.boutonAfficher) ;
- Associer un comportement à votre bouton :
bAfficher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//comportement de votre bouton
}
});
8) Modifier le comportement de votre bouton pour qu’il affiche J’ai été cliqué ! pendant 2
secondes dans un Toast, quand il est cliqué.
Indication : Modifier l’instruction d’affichage pour qu’elle devienne comme suit :
Toast helloToast = Toast.makeText(MainActivity.this, "message à afficher",
Toast.LENGTH_LONG);
helloToast.setGravity(Gravity.CENTER, 0, 0);
helloToast.show();
9) Création d’une nouvelle activité
Pour créer une nouvelle activité, il faut suivre les étapes suivantes :
- Créer une nouvelle classe dans votre package qui hérite de la classe Activity.
- Créer un nouveau fichier layout, et y ajouter les éléments graphiques désirés.
- Associer ce fichier layout à votre activité dans la méthode onCreate().
- La nouvelle activité est ajoutée dans le fichier Manifest.
Remarque : Dans le manifest, changer l’emplacement de la balise <intent-filter> selon le
besoin. Cette balise permet, grâce à son action android.intent.action.MAIN, de spécifier que
l’activité en cours est l’activité de départ de l’application.
Travail à faire :
Créer une nouvelle activité qu’on nommera ClicActivity, contenant uniquement un champ de
texte de type TextView. Attribuer à cet élément l’ID = clicText. Ecrire dans ce champ de texte
la chaîne : « J’ai cliqué sur le bouton ! ». Exécuter cette activité.
10) Passage d’une activité à une autre
Le passage entre deux activités requiert un Intent. Un Intent est un conteneur d’information.
Il permet de passer des messages entre deux activités. L’activité appelante pourra ainsi
transmettre des informations à l’application appelée, ainsi qu’au système Android. Il existe
plusieurs manières de créer un Intent.
Nous allons choisir la suivante :
Intent intent = new Intent(this, ClicActivity.class);
startActivity(intent);
Pour démarrer une autre activité, il faut lancer la méthode startActivity(Intent i) de la classe
Activity initiale.
Travail à faire :
a) Dans le Intent, le contexte sera MainActivity.this, et la classe cible sera ClicActivity.class.
b) Pour démarrer l’activité, la méthode startActivity doit être appelée à partir de l’objet
MainActivity.this
11) Récupération de messages entre activités
➢ Pour passer un message à une activité, on doit ajouter des Extras aux Intents. Par exemple :
myIntent.putExtra(<clé>, <chaîne>);
Cette instruction va passer la chaîne de caractère chaîne dans une variable appelée clé à
l’activité cible de l’Intent.
•
•
La clé est l'identifiant, tu peux mettre ce que tu veux, c'est simplement une chaîne de
caractères ;
La chaine est la valeur de ta donnée. Elle sera associée à la clé.
➢ Dans l’activité cible, on récupère cet Extra en utilisant :
getIntent().getStringExtra(<clé>) ;
Travail à faire :
Modifier vos activités de manière à ce que :
a) L’utilisateur saisit une chaîne dans le champ de saisie de MainActivity
b) L’utilisateur clique sur le bouton
c) ClicActivity est chargée, et le champ de texte TextView contient la chaîne qu’a saisi
l’utilisateur.
Indication :
Nous allons récupérer notre chaine à partir de l’élément EditText avec la méthode
findViewById :
editText = (EditText) findViewById(R.id.EditTextId);
Il va ensuite falloir récupérer la String qui a été rentrée dans l'EditText. Attention, l'EditText
n'est pas capable de nous retourner directement la String qui a été saisie. Il faut d'abord
récupérer le Text puis le convertir en String :
String str = editText.getText().toString();
Dans notre exemple, nous avons ajouté la String comme extra, ce qui doit nous donner :
Intent intent = new Intent (this, <classe de l’activité cible>);
intent.putExtra("Mytext", str);
startActivity(intent);
Dans notre seconde activité, dans la méthode onCreate et juste après l'appel de la méthode
setContentView, nous allons pouvoir récupérer nos extras avec l’instruction suivante.
str = getIntent().getStringExtra("Mytext");
Téléchargement