Dans une application mobile, la touche « Retour » provoque par défaut la fermeture de l’écran en cours. Si on se trouve sur l’écran principal, elle provoque la fermeture de l’application.
Au cours de la navigation, il arrive fréquemment d’effleurer cette touche « Retour », et de fermer l’application par erreur.
Nous allons voir dans cet article comment redéfinir l’action associée par défaut à cette touche, pour afficher un message de confirmation avant fermeture.
Rappel sur la classe Activity
D'une manière générale, un 'Activity' désigne un écran dans une application Android. Pour créer un nouvel écran, il suffit d'ajouter une classe dérivant de la classe de base 'Activity' :
Par définition, ‘MonEcran’ hérite alors des méthodes de la classe 'Activity', parmi lesquelles :
Au sein de nos écrans, ces méthodes peuvent être surchargées. C’est ce que l’on fait habituellement avec la méthode "OnCreate", qui permet de gérer le chargement de l’écran.
Surcharge de la méthode OnBackPressed
Dans le cas de la touche « Retour », la méthode qui nous intéresse est la méthode « OnBackPressed ».
La surcharger au sein de notre écran principal permettra de modifier son comportement :
Ajout d’un message d’alerte
Au sein de cette méthode OnBackPressed, nous allons créer et afficher un message d’alerte demandant à l’utilisateur s’il souhaite vraiment quitter l’application.
On construit une "AlertDialog" en précisant quelles actions réaliser lorsque l'utilisateur clique sur les différents choix :
- Si l’utilisateur répond « Oui » : la méthode Finish() fermera l’écran, et donc l’application si c’était notre écran principal.
- Si l’utilisateur répond « Non » : sans aucun ajout de code, l’AlertDialog sera fermée, mais notre Activity restera ouvert : nous avons dans ce cas annulé le clic sur la touche « Retour ».
Le rendu à l'écran est le suivant :