Comment gérer plusieurs Activity en kotlin ?

Comme chaque semaine, mon nouvel article ! Si vous avez lu mon précédent article “TextWatcher en kotlin”, vous savez qu’actuellement je travaille sur une nouvelle application que je présenterai prochainement. Dans cette application, je vais utiliser deux activités (activity) qui communiqueront entre elles pour s’échanger des données. Dans cet article je vais vous rappeler la notion d’activité (activity) et vous expliquez comment gérer plusieurs activités sur votre application android. Nous verrons également la notions d’intent avec les activités sans trop rentrer dans les possibilités que la notion nous offre. La notion d’intent  possède beaucoup de fonctionnalités qui nécessitent d’être traitées dans un ou plusieurs articles pour aborder l’essentielle. 

Une activity c’est quoi ?

Une activité (en anglais : activity) sur android c’est le cœur de l’application. Une activité c’est un fichier et c’est aussi une classe. Elle gère l’écran de l’application sur lequel  l’utilisateur peut interagir. Elle s’appuie sur  un fichier XML qui généralement porte le même nom. L’activité possède la méthode Oncreate. Cette méthode initialise l’activité à partir d’un fichier XML (méthode setContentView() ). Pour caricaturer, une activité c’est un écran ou une page de votre application. À la création de votre projet Android Studio vous génère l’activité avec son fichier xml associé.

shema_Activity

Votre application peut posséder plusieurs écrans donc plusieurs activités. L’utilisateur peut dans son application jongler par exemple avec un menu (première activity) et une page de paramètres (deuxième activity).

La création d’une seconde activity

Il y a plusieurs façons de rajouter une activité à notre projet. Le plus simple c’est de passer par le générateur de code de notre environnement de développement.

(clic droit dans l’onglet latéral de notre projet => “New”, => “Activity” => “Empty Activity”)

option_new_Activity

Cet outil va nous générer automatique le code de notre activité après qu’on l’ait configurée. Pour configurer cette activité, il suffit de compléter la fenêtre (ci-dessous) qui vient d’apparaître.

Creation_activity

La case  “Generate Layout File” va vous générer votre fichier XML layout. La deuxième case “Luncher Activity”, indique que ça sera votre première activité a être lancée à chaque démarrage de l’application. La dernière case “Backards Compatibility (AppCompat)” à une importance que visuel, elle ajoute à votre activité un thème que vous pouvez configurer.

cliquez ensuite sur Finish et android studio s’occupe de configurer et de générer les fichiers pour vous.

manifests

 

fichier xml manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" package="com.example.erwan.demoactivity">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".Main2Activity">
</activity>
</application>

</manifest>

Dans le fichier AndroidManifests.xml, on peut apercevoir quelques modifications, notamment l’ajout de l’activity avec son nom.

Le fichier Manifest est très utile car il présente les informations essentielles de votre application android. Par exemple : Il indique le nom du package qui sert d’identifiant unique pour l’application, Il décrit les composants de l’application (les activités, les services), Il précise l’icône associée à votre application, ect…

Si vous souhaitez vous renseigner un peu plus sur le fichier manifest, je vous recommande de lire cette page.

La communication entre deux activités

La communication entre deux activités peut s’effectuer de plusieurs façons différentes (échange de données, changer d’activité, etc… ). Il serait trop long de vous préciser l’ensemble des solutions qu’il serait possible de faire. Dans mon cas, je vais vous présenter la communication à travers le changement d’activité que j’utilise notamment dans le développement de ma prochaine application.

Petit exemple

J’ai développé une petite application . Le but de cette application est de vous faire comprendre rapidement comment jongler avec vos activités. Pour cette application, j’ai créé une activité basique avec un bouton. Ce bouton permettra à l’utilisateur après le clic de se rendre sur une deuxième activité avec un bouton de retour. Ce bouton retour, renverra l’utilisateur vers la première activité.

demo_startActivity

la méthode startActivity

La méthode startActivity permet de lancer une nouvelle activité à l’écran qui vient s’empiler sur la première. Cette méthode demande en paramètre un Intent.

Un Intent c’est un objet qui décrit une opération à exécuter. Il peut être utilisé avec startActivity pour lancer une Activity, broadcastIntent où BroadcastReceiver pour faire de l’émission/réception et  Context.startService ou Context.bindService pour communiquer avec un processus en arrière – plan.

L’intent s’initialise avec la méthode “Intent” qui porte le même nom. Elle demande en paramètre un contexte de départ et un contexte d’arrivée. Pour comprendre, reprenons notre exemple. Je souhaite depuis ma première activité aller sur ma deuxième activité. Par conséquent, mon contexte de départ c’est ma première activité et le contexte d’arrivé c’est ma deuxième activité.

Intent

Pour finir voici le code lors du clics sur le bouton “changer d’activity”. Le clics sur le bouton viendra appeler la méthode startActivity : 

première activity
class MainActivity : AppCompatActivity() {

//Declaration de mon bouton
lateinit var boutonChanger : Button

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

//initialisation
boutonChanger = findViewById(R.id.buttonChanger)

// creation de notre intent
val monIntent : Intent = Intent(this,Main2Activity::class.java)

//clic sur le bouton
boutonChanger.setOnClickListener {
startActivity(monIntent)
}
}
}

Et voici le code lors du clics sur le bouton “retour”. Le clics sur le bouton viendra appeler la méthode startActivity :

deuxième activity
class Main2Activity : AppCompatActivity() {

//Declaration de mon bouton
lateinit var Retour : Button

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)

//initialisation
Retour = findViewById(R.id.buttonRetour)


// creation de notre intent
val monIntentRetour : Intent = Intent(this,MainActivity::class.java)

//clic sur le bouton
Retour.setOnClickListener {
startActivity(monIntentRetour)
}
}
}

Merci d’avoir lu ! Maintenant, si vous avez aimé le contenu de l’article, si  vous connaissez une personne à qui cet article peut intéresser, n’hésiter pas à le liker et à le partager sur les réseaux sociaux. Si  vous souhaitez me faire part de vos remarques, de vos problèmes, de vos suggestions de prochain article ou tout simplement de votre soutien n’hésitez pas à m’en faire part dans les commentaires, je vous en remercie.

Partager l'article :
  •  
  •  
  •  
  •  
  • 15
    Partages

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *