zehunter Posté(e) 14 janvier 2010 Share Posté(e) 14 janvier 2010 (modifié) bonjour a tous, j'aimerais savoir si il etait possible d'agir sur le bouton back et home afin d'empeché l'appli que quitter (au milieu d'une saisie d'info), ou au moins de géré un message annoncant la perte d'info (j'hésite a savoir ce que je vais proposer a l'utilisateur ...) merci par avance de votre aide, Modifié 27 janvier 2010 par zehunter Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
rastalion Posté(e) 14 janvier 2010 Share Posté(e) 14 janvier 2010 salut j'ai pas bien comprit Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kuiplo Posté(e) 14 janvier 2010 Share Posté(e) 14 janvier 2010 (modifié) Le SDK te permet d'intercepter le bouton back, par contre pour le bouton home tu ne peux pas normalement. Pour le bouton back, tu mets ça dans ton activity : @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // Fais ton traitement } } Modifié 14 janvier 2010 par Kuiplo Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
neoakira Posté(e) 14 janvier 2010 Share Posté(e) 14 janvier 2010 faut pas empêcher les users de quitter une ampli... ho pire tu affiche un dialog met c'est pas top :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
zehunter Posté(e) 14 janvier 2010 Auteur Share Posté(e) 14 janvier 2010 Le SDK te permet d'intercepter le bouton back, par contre pour le bouton home tu ne peux pas normalement.Pour le bouton back, tu mets ça dans ton activity : @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // Fais ton traitement } } domage pour le bouton home... a la limite j'y pensais, de voir dans le "life cycle" voir par quoi passe une pression sur home. sinon je cherche pas a empecher de quitter, mais juste voir ce qui peux etre fait, pour sauvegarder les info, ou les perdre, mais prevenir avec un dialog... a voir... j'ai pas trop defini toute mon appli! je suis surtout a chercher des cas a dévelloppé, pour apprendre a dev sous android! :-) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
neoakira Posté(e) 14 janvier 2010 Share Posté(e) 14 janvier 2010 http://developer.android.com/intl/fr/reference/android/view/KeyEvent.html#KEYCODE_HOME ... mais ne pas confondre, cette touche ne sert pas à quitter l'application mais à la mettre en arrière plan : Android est multitache :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 17 janvier 2010 Share Posté(e) 17 janvier 2010 Empêcher l'utilisateur de quitter une application n'est pas une chose à faire. Si tu souhaite notifier l'utilisateur d'une perte d'information, utilise un Toast que tu affiche dans le onPause(). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
zehunter Posté(e) 26 janvier 2010 Auteur Share Posté(e) 26 janvier 2010 (modifié) Empêcher l'utilisateur de quitter une application n'est pas une chose à faire. Si tu souhaite notifier l'utilisateur d'une perte d'information, utilise un Toast que tu affiche dans le onPause(). salut c'est que ce que voudrais faire, mais si l'utilisateur dit qu'il veux plus quitter, je fait comment pour intercepter le BACK et ne pas quitter (a la demande de l'utilisateur donc) ? Edit : bon en fait j'ai modifier mon code, avec une alertdialog et ne pas quitter j'y arrive :) le seul soucis, c'est quer si j'intercepte le onKeyPress, du coup j'intercepte la majorité des touche pressé on dirait :-( voici mon code : private boolean back_answer = false; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(debugState) { Toast.makeText(GoogleAccountSwitcher.this, "key press", Toast.LENGTH_SHORT).show(); } if (keyCode == KeyEvent.KEYCODE_BACK) { if(debugState) { Toast.makeText(GoogleAccountSwitcher.this, "BACK key press", Toast.LENGTH_SHORT).show(); } AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Etes vous sûr de vouloir quitter ?") .setCancelable(false) .setPositiveButton("Oui", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { back_answer = true; } }) .setNegativeButton("Non", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { back_answer = false; } }); AlertDialog alert = builder.create(); alert.show(); } return back_answer; } si je répond oui, ca quitte, si je repond non, ca bouge pas ... mais si je clique sur menu, rien ne se passe plus :-( par contre HOME est toujours géré... une idée du pourquoi? je veux juste intervenir sur une touche, et ne rien touché au reste ... :-( merci par avance, Modifié 27 janvier 2010 par zehunter Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
zehunter Posté(e) 27 janvier 2010 Auteur Share Posté(e) 27 janvier 2010 bon je sais pas si c'est propre, mais j'aéi une solution a mon propre probleme :-) du coup c'est nickel :) @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(debugState) { Toast.makeText(GoogleAccountSwitcher.this, "key press", Toast.LENGTH_SHORT).show(); } if (keyCode == KeyEvent.KEYCODE_BACK) { e = event; k = keyCode; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Etes vous sûr de vouloir quitter ?") .setCancelable(false) .setPositiveButton("Oui", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivityName.super.onKeyDown(k, e); } }) .setNegativeButton("Non", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); AlertDialog alert = builder.create(); alert.show(); return true; } else { return super.onKeyDown(keyCode, event); } } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tama Chan Posté(e) 28 janvier 2010 Share Posté(e) 28 janvier 2010 Si tu veux faire quelque chose avant que ton app passe en arriere plan, implemente OnPause avec un @override dans ton activity, ça te permet de lancer du code quand ton app est mis en pause (avec home par exemple) Dans le style il y a OnDestroy si jamais l'OS kill ton app. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Galize Posté(e) 29 janvier 2010 Share Posté(e) 29 janvier 2010 Un peu tard, mais tu peux lancer un service dans le onPause, on Destroy qui va relancer l'activité. Ainsi le bouton home passera effectivement l'activité en arrière plan et elle reviendra quand même toute seule automatiquement. C'est toutefois très laid et peut perturber plus d'un utilisateur. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.