Aller au contenu

[RESOLU] agir sur le bouton back et home


zehunter

Recommended Posts

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é par zehunter
Lien vers le commentaire
Partager sur d’autres sites

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é par Kuiplo
Lien vers le commentaire
Partager sur d’autres sites

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! :-)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
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é par zehunter
Lien vers le commentaire
Partager sur d’autres sites

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);
      }
  }

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...