SlideShare a Scribd company logo
1 of 9
Download to read offline
M.Houssem LAHIANI 
1 
Cours de programmation sous Android 
Responsable de matière : Monsieur Houssem Lahiani. 
Chapitre 5 : Les activités et les composants sous Android 
Plan du chapitre 
Cours de programmation sous Android .............................................................................................................................. 1 
Chapitre 5 : Les activités et les composants sous Android ................................................................................................ 2 
I. Les activités .................................................................................................................................................................. 2 
II. Les composants Android ......................................................................................................................................... 5 
1. Boutons radios et cases à cocher ................................................................................................................................. 5 
2. Les Alertes .................................................................................................................................................................... 7
M.Houssem LAHIANI 
2 
Chapitre 5 : Les activités et les composants sous Android 
I. Les activités 
Faisons un peu de théorie. Une activité représente en gros ce que l'on voit à l'écran, pour la définir simplement, elle est généralement composée d'une classe, et d'un layout xml. 
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é n’est pas linéaire, elle est soumise à plusieurs évènements. Chaque événement est représenté dans une méthode. La figure suivante illustre le cycle de vie d’une application Android :
M.Houssem LAHIANI 
3 
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 arrière-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(). 
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. 
Pour générer ces méthodes, commencer à taper le nom de la méthode dans le fichier de code, puis taper sur les touches Ctrl‑Espace. 
Cliquer sur la méthode qui vous est proposée. Son code sera automatiquement généré. 
Exercice 
1. Générer les méthodes correspondant à chacun des évènements listés dans le cycle de vie. 
2. 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(); 
3. 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 ? 
public class HelloworldActivity extends Activity { 
private Button bAfficher; 
private EditText edit; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
Toast helloToast = Toast.makeText(this, "onCreate", 
Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0);
M.Houssem LAHIANI 
4 
helloToast.show(); 
// Affectation des elements graphiques aux attributs 
this.bAfficher = (Button) this.findViewById(R.id.boutonAfficher); 
this.edit = (EditText) this.findViewById(R.id.edit); 
// Comportement du bouton bAfficher 
this.bAfficher.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
// afficher un message 
Toast helloToast = Toast.makeText(HelloworldActivity.this, 
"J'ai étè cliquer!", Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0); 
helloToast.show(); 
Toast.makeText(HelloworldActivity.this, "Clic", 1000).show(); 
}});} 
public void passerActivite(View v) { 
// lancer la nouvelle activitŽ 
Intent myIntent = new Intent(HelloworldActivity.this, 
ClicActivity.class); 
myIntent.putExtra("chaine", edit.getText().toString()); 
startActivity(myIntent); 
} 
@Override 
protected void onStart() { 
super.onStart(); 
Toast helloToast = Toast.makeText(this, "onStart", 
Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0); 
helloToast.show(); 
} 
@Override 
protected void onResume() { 
super.onResume(); 
Toast helloToast = Toast.makeText(this, "onResume", 
Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0); 
helloToast.show(); 
} 
@Override 
protected void onPause() { 
super.onPause(); 
Toast helloToast = Toast.makeText(this, "onPause", 
Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0); 
helloToast.show(); 
} 
@Override 
protected void onRestart() { 
super.onRestart(); 
Toast helloToast = Toast.makeText(this, "onRestart", 
Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0); 
helloToast.show(); 
} 
@Override 
protected void onStop() { 
super.onStop(); 
Toast helloToast = Toast.makeText(this, "onStop", 
Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0); 
helloToast.show();}
M.Houssem LAHIANI 
5 
@Override 
protected void onDestroy() { 
super.onDestroy(); 
Toast helloToast = Toast.makeText(this, "onDestroy", 
Toast.LENGTH_SHORT); 
helloToast.setGravity(Gravity.CENTER, 0, 0); 
helloToast.show(); 
} 
II. Les composants Android 
1. Boutons radios et cases à cocher 
En Android, vous pouvez utiliser la classe "android.widget.RadioButton" pour utiliser les boutons radio qui sont généralement regroupés par android.widget.RadioGroup. Si les boutons radios sont dans un groupe,si un RadioButton est sélectionnée tous les autres seront automatiquement désélectionnés. Dans cette partie, nous allons vous montrer comment utiliser le XML pour créer deux boutons radio et les regroupés au sein d'un groupe de radio. 
Exercice 
Créer un nouveau projet portant le nom de « Radio ». 
Dans le ficher strings.xml mettez les lignes suivantes : 
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string name="hello">Hello World, MyAndroidAppActivity!</string> 
<string name="app_name">MyAndroidApp</string> 
<string name="radio_male">Male</string> 
<string name="radio_female">Female</string> 
<string name="action_settings">Settings</string> 
<string name="btn_display">Display</string> 
</resources> 
Dans le fichier (Layout) main.xml essayez de créer cette interface en utilisant un “RadioGroup“ dans un linearLayout. 
Dans votre code Java, essayez d’afficher dans un toast le mot qui se trouve dans la case cochée après avoir cliquer sur le bouton Display.
M.Houssem LAHIANI 
6 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 
<RadioGroup 
android:id="@+id/radioSex" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 
<RadioButton 
android:id="@+id/radioMale" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/radio_male" 
android:checked="true" /> 
<RadioButton 
android:id="@+id/radioFemale" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/radio_female" /> 
</RadioGroup> 
<Button 
android:id="@+id/btnDisplay" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/btn_display" /> 
</LinearLayout> 
Pour rendre un bouton radio sélectionné par défaut, mettez android: checked = "true" dans l'élément RadioButton. Dans ce cas, la radio option "Male" est sélectionné par défaut. 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.Toast; 
public class MyAndroidAppActivity extends Activity { 
private RadioGroup radioSexGroup; 
private RadioButton radioSexButton; 
private Button btnDisplay; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState);
M.Houssem LAHIANI 
7 
setContentView(R.layout.main); 
addListenerOnButton(); 
} 
public void addListenerOnButton() { 
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex); 
btnDisplay = (Button) findViewById(R.id.btnDisplay); 
btnDisplay.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
// get selected radio button from radioGroup 
int selectedId = radioSexGroup.getCheckedRadioButtonId(); 
// find the radiobutton by returned id 
radioSexButton = (RadioButton) findViewById(selectedId); 
Toast.makeText(MyAndroidAppActivity.this,radioSexButton.getText(),Toast.LENGTH_SHORT).show(); 
} 
}); 
} 
} 
2. Les Alertes 
Si vous préférez utiliser le style plus classique des boîtes de dialogue, choisissez plutôt AlertDialog. Comme toute boîte de dialogue modale, un AlertDialog s’ouvre, prend le focus et reste affiché tant que l’utilisateur ne le ferme pas. Ce type d’affichage convient donc bien aux erreurs critiques, aux messages de validation qui ne peuvent pas être affichés correctement dans l’interface de base de l’activité ou à toute autre information dont vous voulez vous assurer la lecture immédiate par l’utilisateur. 
Pour créer un AlertDialog, le moyen le plus simple consiste à utiliser la classe Builder, qui offre un ensemble de méthodes permettant de configurer un AlertDialog. Chacune de ces méthodes renvoie le Builder afin de faciliter le chaînage des appels. À la fin, il suffit d’appeler la méthode show() de l’objet Builder pour afficher la boîte de dialogue. 
Voici les méthodes de configuration de Builder les plus utilisées : 
 setMessage() permet de définir le "corps" de la boîte de dialogue à partir d’un simple message de texte. Son paramètre est un objet String ou un identifiant d’une ressource textuelle. 
 setTitle() et setIcon() permettent de configurer le texte et/ou l’icône qui apparaîtra dans la barre de titre de la boîte de dialogue. 
 setPositiveButton(), setNeutralButton() et setNegativeButton() permettent d’indiquer les boutons qui apparaîtront en bas de la boîte de dialogue, leur emplacement latéral
M.Houssem LAHIANI 
8 
(respectivement, à gauche, au centre ou à droite), leur texte et le code qui sera appelé lorsqu’on clique sur un bouton (en plus de refermer la boîte de dialogue). 
Si vous devez faire d’autres configurations que celles proposées par Builder, appelez la méthode create() à la place de show() : vous obtiendrez ainsi une instance d’AlertDialog partiellement construite que vous pourrez configurer avant d’appeler l’une des méthodes show() de l’objet AlertDialog lui-même. 
Après l’appel de show(), la boîte de dialogue s’affiche et attend une saisie de l’utilisateur. 
AlertDialog alertDialog; 
alertDialog = new AlertDialog.Builder(this).create(); 
alertDialog.setTitle("titre de l’alerte"); 
alertDialog.setMessage("Message à afficher !!!"); 
alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 
dialog.dismiss(); 
}}); 
alertDialog.show(); 
Exercice 
Dans le même exercice de la partie précédente, créez une Alerte qui a comme titre « Votre genre » et comme texte le contenu de RadioButton(male ou female) ,et essayer de lui attribuer un negativeButton (No) qui permet de quitter l’application et un positiveButton qui permet de quitter le message d’alerte. 
//AlertDialog 
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MyAndroidAppActivity.this); 
// set title 
alertDialogBuilder.setTitle("Votre genre"); 
// set dialog message 
alertDialogBuilder 
.setMessage(radioSexButton.getText()) 
.setCancelable(false) 
.setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog,int id) { 
// if this button is clicked, close 
// current activity 
dialog.cancel(); 
} 
})
M.Houssem LAHIANI 
9 
.setNegativeButton("No",new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog,int id) { 
MyAndroidAppActivity.this.finish(); 
} 
}); 
// create alert dialog 
AlertDialog alertDialog = alertDialogBuilder.create(); 
// show it 
alertDialog.show();

More Related Content

What's hot

Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"Ibtihel El Bache
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITLina Meddeb
 
La spécification des besoins
La spécification des besoinsLa spécification des besoins
La spécification des besoinsIsmahen Traya
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Ilyas CHAOUA
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Nawres Farhat
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaNazih Heni
 
Conception et Mise en place d'une Application Web SPA pour les établissements...
Conception et Mise en place d'une Application Web SPA pour les établissements...Conception et Mise en place d'une Application Web SPA pour les établissements...
Conception et Mise en place d'une Application Web SPA pour les établissements...Ben Ahmed Zohra
 
Réalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis GhardaïaRéalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis GhardaïaBachir Benyammi
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
Rapport de projet de fin d'année
Rapport de projet de fin d'année Rapport de projet de fin d'année
Rapport de projet de fin d'année kaies Labiedh
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Ahmed Makni
 
Rapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiDonia Hammami
 
Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Mohamed Boubaya
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Addi Ait-Mlouk
 
Rapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRouâa Ben Hammouda
 

What's hot (20)

Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"Conception et réalisation d'une application mobile cross-platform "Taki Academy"
Conception et réalisation d'une application mobile cross-platform "Taki Academy"
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 
La spécification des besoins
La spécification des besoinsLa spécification des besoins
La spécification des besoins
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Rapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédiaRapport de projet de fin d'étude licence informatique et multimédia
Rapport de projet de fin d'étude licence informatique et multimédia
 
Conception et Mise en place d'une Application Web SPA pour les établissements...
Conception et Mise en place d'une Application Web SPA pour les établissements...Conception et Mise en place d'une Application Web SPA pour les établissements...
Conception et Mise en place d'une Application Web SPA pour les établissements...
 
Réalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis GhardaïaRéalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis Ghardaïa
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Rapport de projet de fin d'année
Rapport de projet de fin d'année Rapport de projet de fin d'année
Rapport de projet de fin d'année
 
Rapport pfe
Rapport pfeRapport pfe
Rapport pfe
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Rapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammami
 
Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...
 
Rapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learning
 

Viewers also liked

Développement Android
Développement AndroidDéveloppement Android
Développement AndroidFranck SIMON
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionYann Caron
 
In01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google mapIn01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google mapYann Caron
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm
 
In01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - androidIn01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - androidYann Caron
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
In01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databasesIn01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databasesYann Caron
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Olivier Le Goaër
 
Télémétrie d’openstack
Télémétrie d’openstackTélémétrie d’openstack
Télémétrie d’openstackTECOS
 
Summer internship
Summer internshipSummer internship
Summer internshipTECOS
 
Mobile certified
Mobile certifiedMobile certified
Mobile certifiedTECOS
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤Yuichi Sakuraba
 
Gwt jetty et sources de données
Gwt   jetty et sources de donnéesGwt   jetty et sources de données
Gwt jetty et sources de donnéesFranck SIMON
 
Diagramme de cas d'utilisation
Diagramme de cas d'utilisationDiagramme de cas d'utilisation
Diagramme de cas d'utilisationAmira Hakim
 

Viewers also liked (20)

Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Développement Android
Développement AndroidDéveloppement Android
Développement Android
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introduction
 
In01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google mapIn01 - Programmation Android - 05 - Google map
In01 - Programmation Android - 05 - Google map
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5
 
Android
AndroidAndroid
Android
 
In01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - androidIn01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - android
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
In01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databasesIn01 - Programmation Android - 04 - databases
In01 - Programmation Android - 04 - databases
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Wifi 2
Wifi 2Wifi 2
Wifi 2
 
Télémétrie d’openstack
Télémétrie d’openstackTélémétrie d’openstack
Télémétrie d’openstack
 
Summer internship
Summer internshipSummer internship
Summer internship
 
Mobile certified
Mobile certifiedMobile certified
Mobile certified
 
Mta
MtaMta
Mta
 
JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤JavaFX 2.0 - リッチクライアントのためのUI基盤
JavaFX 2.0 - リッチクライアントのためのUI基盤
 
Gwt jetty et sources de données
Gwt   jetty et sources de donnéesGwt   jetty et sources de données
Gwt jetty et sources de données
 
Diagramme de cas d'utilisation
Diagramme de cas d'utilisationDiagramme de cas d'utilisation
Diagramme de cas d'utilisation
 
Les Fragments
Les FragmentsLes Fragments
Les Fragments
 

Similar to Cycle de vie d'activité Android et les composant d'Android

Les vues (views) sous android
Les vues (views) sous androidLes vues (views) sous android
Les vues (views) sous androidHoussem Lahiani
 
Les intents sous Android
Les intents sous Android Les intents sous Android
Les intents sous Android Houssem Lahiani
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Saber LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 
Introduction à Android
Introduction à AndroidIntroduction à Android
Introduction à AndroidYoann Gotthilf
 
Android Lab Test : La reconnaissance vocale (français)
Android Lab Test : La reconnaissance vocale (français)Android Lab Test : La reconnaissance vocale (français)
Android Lab Test : La reconnaissance vocale (français)Bruno Delb
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mathias Seguy
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...
Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...
Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...ATPENSC-Group
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Mathias Seguy
 
Tutorial android - créer des apps
Tutorial android - créer des appsTutorial android - créer des apps
Tutorial android - créer des appsNoé Breiss
 

Similar to Cycle de vie d'activité Android et les composant d'Android (20)

5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Les vues (views) sous android
Les vues (views) sous androidLes vues (views) sous android
Les vues (views) sous android
 
TP_1.pdf
TP_1.pdfTP_1.pdf
TP_1.pdf
 
Les intents sous Android
Les intents sous Android Les intents sous Android
Les intents sous Android
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Introduction à Android
Introduction à AndroidIntroduction à Android
Introduction à Android
 
Android Lab Test : La reconnaissance vocale (français)
Android Lab Test : La reconnaissance vocale (français)Android Lab Test : La reconnaissance vocale (français)
Android Lab Test : La reconnaissance vocale (français)
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...
Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...
Fiche de TD 1 de préparation probatoire (littéraire et scientifique) du Camer...
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
 
Manualjquery
ManualjqueryManualjquery
Manualjquery
 
Tutorial android
Tutorial androidTutorial android
Tutorial android
 
Chapitre 5 android
Chapitre 5 androidChapitre 5 android
Chapitre 5 android
 
Tutorial android - créer des apps
Tutorial android - créer des appsTutorial android - créer des apps
Tutorial android - créer des apps
 
Tutorial android
Tutorial androidTutorial android
Tutorial android
 

Cycle de vie d'activité Android et les composant d'Android

  • 1. M.Houssem LAHIANI 1 Cours de programmation sous Android Responsable de matière : Monsieur Houssem Lahiani. Chapitre 5 : Les activités et les composants sous Android Plan du chapitre Cours de programmation sous Android .............................................................................................................................. 1 Chapitre 5 : Les activités et les composants sous Android ................................................................................................ 2 I. Les activités .................................................................................................................................................................. 2 II. Les composants Android ......................................................................................................................................... 5 1. Boutons radios et cases à cocher ................................................................................................................................. 5 2. Les Alertes .................................................................................................................................................................... 7
  • 2. M.Houssem LAHIANI 2 Chapitre 5 : Les activités et les composants sous Android I. Les activités Faisons un peu de théorie. Une activité représente en gros ce que l'on voit à l'écran, pour la définir simplement, elle est généralement composée d'une classe, et d'un layout xml. 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é n’est pas linéaire, elle est soumise à plusieurs évènements. Chaque événement est représenté dans une méthode. La figure suivante illustre le cycle de vie d’une application Android :
  • 3. M.Houssem LAHIANI 3 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 arrière-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(). 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. Pour générer ces méthodes, commencer à taper le nom de la méthode dans le fichier de code, puis taper sur les touches Ctrl‑Espace. Cliquer sur la méthode qui vous est proposée. Son code sera automatiquement généré. Exercice 1. Générer les méthodes correspondant à chacun des évènements listés dans le cycle de vie. 2. 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(); 3. 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 ? public class HelloworldActivity extends Activity { private Button bAfficher; private EditText edit; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Toast helloToast = Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0);
  • 4. M.Houssem LAHIANI 4 helloToast.show(); // Affectation des elements graphiques aux attributs this.bAfficher = (Button) this.findViewById(R.id.boutonAfficher); this.edit = (EditText) this.findViewById(R.id.edit); // Comportement du bouton bAfficher this.bAfficher.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // afficher un message Toast helloToast = Toast.makeText(HelloworldActivity.this, "J'ai étè cliquer!", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0); helloToast.show(); Toast.makeText(HelloworldActivity.this, "Clic", 1000).show(); }});} public void passerActivite(View v) { // lancer la nouvelle activitŽ Intent myIntent = new Intent(HelloworldActivity.this, ClicActivity.class); myIntent.putExtra("chaine", edit.getText().toString()); startActivity(myIntent); } @Override protected void onStart() { super.onStart(); Toast helloToast = Toast.makeText(this, "onStart", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0); helloToast.show(); } @Override protected void onResume() { super.onResume(); Toast helloToast = Toast.makeText(this, "onResume", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0); helloToast.show(); } @Override protected void onPause() { super.onPause(); Toast helloToast = Toast.makeText(this, "onPause", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0); helloToast.show(); } @Override protected void onRestart() { super.onRestart(); Toast helloToast = Toast.makeText(this, "onRestart", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0); helloToast.show(); } @Override protected void onStop() { super.onStop(); Toast helloToast = Toast.makeText(this, "onStop", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0); helloToast.show();}
  • 5. M.Houssem LAHIANI 5 @Override protected void onDestroy() { super.onDestroy(); Toast helloToast = Toast.makeText(this, "onDestroy", Toast.LENGTH_SHORT); helloToast.setGravity(Gravity.CENTER, 0, 0); helloToast.show(); } II. Les composants Android 1. Boutons radios et cases à cocher En Android, vous pouvez utiliser la classe "android.widget.RadioButton" pour utiliser les boutons radio qui sont généralement regroupés par android.widget.RadioGroup. Si les boutons radios sont dans un groupe,si un RadioButton est sélectionnée tous les autres seront automatiquement désélectionnés. Dans cette partie, nous allons vous montrer comment utiliser le XML pour créer deux boutons radio et les regroupés au sein d'un groupe de radio. Exercice Créer un nouveau projet portant le nom de « Radio ». Dans le ficher strings.xml mettez les lignes suivantes : <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MyAndroidAppActivity!</string> <string name="app_name">MyAndroidApp</string> <string name="radio_male">Male</string> <string name="radio_female">Female</string> <string name="action_settings">Settings</string> <string name="btn_display">Display</string> </resources> Dans le fichier (Layout) main.xml essayez de créer cette interface en utilisant un “RadioGroup“ dans un linearLayout. Dans votre code Java, essayez d’afficher dans un toast le mot qui se trouve dans la case cochée après avoir cliquer sur le bouton Display.
  • 6. M.Houssem LAHIANI 6 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RadioGroup android:id="@+id/radioSex" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radioMale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_male" android:checked="true" /> <RadioButton android:id="@+id/radioFemale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_female" /> </RadioGroup> <Button android:id="@+id/btnDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_display" /> </LinearLayout> Pour rendre un bouton radio sélectionné par défaut, mettez android: checked = "true" dans l'élément RadioButton. Dans ce cas, la radio option "Male" est sélectionné par défaut. import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class MyAndroidAppActivity extends Activity { private RadioGroup radioSexGroup; private RadioButton radioSexButton; private Button btnDisplay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
  • 7. M.Houssem LAHIANI 7 setContentView(R.layout.main); addListenerOnButton(); } public void addListenerOnButton() { radioSexGroup = (RadioGroup) findViewById(R.id.radioSex); btnDisplay = (Button) findViewById(R.id.btnDisplay); btnDisplay.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // get selected radio button from radioGroup int selectedId = radioSexGroup.getCheckedRadioButtonId(); // find the radiobutton by returned id radioSexButton = (RadioButton) findViewById(selectedId); Toast.makeText(MyAndroidAppActivity.this,radioSexButton.getText(),Toast.LENGTH_SHORT).show(); } }); } } 2. Les Alertes Si vous préférez utiliser le style plus classique des boîtes de dialogue, choisissez plutôt AlertDialog. Comme toute boîte de dialogue modale, un AlertDialog s’ouvre, prend le focus et reste affiché tant que l’utilisateur ne le ferme pas. Ce type d’affichage convient donc bien aux erreurs critiques, aux messages de validation qui ne peuvent pas être affichés correctement dans l’interface de base de l’activité ou à toute autre information dont vous voulez vous assurer la lecture immédiate par l’utilisateur. Pour créer un AlertDialog, le moyen le plus simple consiste à utiliser la classe Builder, qui offre un ensemble de méthodes permettant de configurer un AlertDialog. Chacune de ces méthodes renvoie le Builder afin de faciliter le chaînage des appels. À la fin, il suffit d’appeler la méthode show() de l’objet Builder pour afficher la boîte de dialogue. Voici les méthodes de configuration de Builder les plus utilisées :  setMessage() permet de définir le "corps" de la boîte de dialogue à partir d’un simple message de texte. Son paramètre est un objet String ou un identifiant d’une ressource textuelle.  setTitle() et setIcon() permettent de configurer le texte et/ou l’icône qui apparaîtra dans la barre de titre de la boîte de dialogue.  setPositiveButton(), setNeutralButton() et setNegativeButton() permettent d’indiquer les boutons qui apparaîtront en bas de la boîte de dialogue, leur emplacement latéral
  • 8. M.Houssem LAHIANI 8 (respectivement, à gauche, au centre ou à droite), leur texte et le code qui sera appelé lorsqu’on clique sur un bouton (en plus de refermer la boîte de dialogue). Si vous devez faire d’autres configurations que celles proposées par Builder, appelez la méthode create() à la place de show() : vous obtiendrez ainsi une instance d’AlertDialog partiellement construite que vous pourrez configurer avant d’appeler l’une des méthodes show() de l’objet AlertDialog lui-même. Après l’appel de show(), la boîte de dialogue s’affiche et attend une saisie de l’utilisateur. AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("titre de l’alerte"); alertDialog.setMessage("Message à afficher !!!"); alertDialog.setButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); }}); alertDialog.show(); Exercice Dans le même exercice de la partie précédente, créez une Alerte qui a comme titre « Votre genre » et comme texte le contenu de RadioButton(male ou female) ,et essayer de lui attribuer un negativeButton (No) qui permet de quitter l’application et un positiveButton qui permet de quitter le message d’alerte. //AlertDialog AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MyAndroidAppActivity.this); // set title alertDialogBuilder.setTitle("Votre genre"); // set dialog message alertDialogBuilder .setMessage(radioSexButton.getText()) .setCancelable(false) .setPositiveButton("Yes",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, close // current activity dialog.cancel(); } })
  • 9. M.Houssem LAHIANI 9 .setNegativeButton("No",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { MyAndroidAppActivity.this.finish(); } }); // create alert dialog AlertDialog alertDialog = alertDialogBuilder.create(); // show it alertDialog.show();