Travaux Pratiques

tp1 : Prise en main

Thème: Une activité, cycle de vie

Question 1)

Proposez une activité permettant d'illustrer son cycle de vie, ci-dessous une idée d'interface avec deux boutons et un texte,

Le texte mentionne les appels aux méthodes onCreate, onStart, onRestart, onResume, onPause, onStop, onDestroy.

ainsi que les sauvegardes et restitutions de l'état

 

Vérifiez le cycle de vie lorsque vous faites une rotation de l'écran

  • Linux: CTRL + F12
  • Mac: Fn + CTRL + F12
  • Windows: Left CTRL + F11 or Left CTRL + F12

 

 

Un extrait de code que vous pouvez réutiliser, ce sont les méthodes associées au clic sur les boutons start et finish

public void onClickStart(View v){
   AlertDialog
alertDialog = new AlertDialog.Builder(MainActivity.this).create();
  
alertDialog.setTitle("onClickStart");
  
alertDialog.setMessage("Démarrage d'une nouvelle activité, même code");
  
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK",
  
new DialogInterface.OnClickListener() {
     
public void onClick(DialogInterface dialog, int which) {
       
dialog.dismiss();
        Intent
intent = new Intent(MainActivity.this,MainActivity.class);  // crétaion d'une autre activité avec le même code
        startActivity(
intent);
     }
   });

  alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Annuler",
    
new DialogInterface.OnClickListener() {
      
public void onClick(DialogInterface dialog, int which) {
        
dialog.dismiss();
       }
   });
 
alertDialog.show();
  }

public void onClickFinish(View v){
   finish();
}

@Override
protected void onStart() {
  
super.onStart();
  
this.editText.append("onStart\n");
}

Le fichier AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="cnam.smb116.tp1"
  android:versionCode="1"
  android:versionName="1.0" >

<uses-sdk
  android:minSdkVersion="8"
  android:targetSdkVersion="21" />

<application
  android:allowBackup="true"
  android:icon="@drawable/cnam_tp_smb116"
  android:label="@string/app_name"
  android:theme="@style/AppTheme" >
<activity
  android:name="cnam.smb116.tp1.MainActivity"
  android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>


  L'icône  cnam_tp_smb116 est ici http://jfod.cnam.fr/SMB116/cnam_tp_smb116.jpg   à placer dans le dossier /resources/drawable/

  Les fichiers custom_button.xml (dossier /res/drawable/) activity_mail.xml (dossier /res/layout)

 

Question 2)

Modifiez l'activité de la question précédente afin de transmettre un numéro unique à chaque création d'une nouvelle activité, ce numéro est affiché à la suite du texte OnCreate.

Proposez une première solution dans laquelle le numéro unique est une variable d'instance,

Transmission de paramètres via l'Intent  http://developer.android.com/reference/android/content/Intent.html

Réception de paramètres cf. getIntent()

et une seconde dans laquelle le numéro est une variable de classe.

 

Après 3 créations :

 

 

A la suite du click sur finish