Cette fois un petit tutoriel pour développer une fenêtre multi-vu sous Android.
I. Un application multi-vu ?
Vous aurez forcément besoin pour créer une application un peu serieuse d'afficher a un moment ou un autre d'autres fenêtres que la fenêtre principale, je vais vous expliquer comment cela fonctionne pas plus tard que maintenant !
II. Le principe de base
Le principe élémentaire sous Android pour afficher des écrans est l'affichage d'Activity.
Chaque Activity lancée masque la précédente et ainsi dessuite.
III. Creer une nouvelle Activity
(Dans les exemples de ce paragraphe, la nouvelle Activity est appelée SecondActivity)
Pour créer une nouvelle Acivity vous aurez besoin de modifier/creer 3 fichiers:
- Modifier le AndroidManifest.xml :
Vous devez déclarer dedans votre Activity dans le tag Application
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".HelloWorldActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity"></activity> </application>
- Créer dans res/layout le fichier secondactivity.xml qui contiendra les objets graphiques de la même façon que le main.xml.
- Créer la classe Java SecondActivity.java dans vos sources avec le code suivant :
import android.app.Activity; public class SecondActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.secondactivity); } }
IV. Lancer la nouvelle Activity a partir de votre fenêtre principale
Il y a deux façon simple de lancer une Activity.
La première consiste a lancer l'Activity sans rien attendre en retour(et apprendre a viiiivre).
Intent i = new Intent(getApplicationContext(), SecondActivity.class); startActivity(i);
La deuxième façon sera utilisée pour récupérer des données de la deuxième Activity une fois cette dernière terminée.(on utilise 1337 comme un identifiant pour l'Activity lancée)
Nous verrons par la suite comment récupérer les informations de cette Activity.
Intent i = new Intent(getApplicationContext(), SecondActivity.class); startActivityForResult (i,1337);
V. Faire passer des informations d'une fenêtre a l'autre
Lorsque vous avez créer votre Intent, il faut pusher dedans les informations que vous voudrez récupérer sur l'autre fenêtre, que ce soit dans le nouvel Intent créé pour ouvrir la nouvelle fenêtre, ou en récupérant l'Intent courant sur la nouvelle fenêtre.
Pusher les informations dans un Intent :
Les informations sont pushés sous la forme d'une map.
Récupérer l'intent courant dans une fenêtre.
VI. Fermer l'Activity
Pour fermer l'Activity dans celle-ci, il suffit d'appeller la fonction
Pour récupérer les informations pushés a partir de la seconde Activity a partir de la première ol faut surcharger la fonction onActivityResult et en fonction du numéro récupéré nous effectuerons le traitement adapté.
Voili voilou !
Normalement avec ces petites commandes on a de quoi faire a peu près ce qu'on veut pour gérer les enchaînements de fenêtres ^^
Lorsque vous avez créer votre Intent, il faut pusher dedans les informations que vous voudrez récupérer sur l'autre fenêtre, que ce soit dans le nouvel Intent créé pour ouvrir la nouvelle fenêtre, ou en récupérant l'Intent courant sur la nouvelle fenêtre.
Pusher les informations dans un Intent :
Les informations sont pushés sous la forme d'une map.
i.putExtra("mail",inputEmail.getText().toString()); i.putExtra("nom",inputName.getText().toString());
Récupérer l'intent courant dans une fenêtre.
Intent i = getIntent();Récupérer les informations.
String email = (String) i.getExtras().get("mail");
VI. Fermer l'Activity
Pour fermer l'Activity dans celle-ci, il suffit d'appeller la fonction
finish();
Pour récupérer les informations pushés a partir de la seconde Activity a partir de la première ol faut surcharger la fonction onActivityResult et en fonction du numéro récupéré nous effectuerons le traitement adapté.
@Override protected void onActivityResult(int requestCode,int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode == 1337){ String email = (String) data.getExtras().get("mail"); String nom = (String) data.getExtras().get("nom"); monTextViewMail.setText(email); monTextViewNom.setText(nom); } }
Voili voilou !
Normalement avec ces petites commandes on a de quoi faire a peu près ce qu'on veut pour gérer les enchaînements de fenêtres ^^
Aucun commentaire:
Enregistrer un commentaire