2012-03-27 6 views
0

Je dois capturer l'événement lorsque mon application affiche une boîte de dialogue et j'appuie sur le bouton de retour de l'appareil.Catch android appuyez sur le bouton précédent lorsque vous appuyez sur showint une boîte de dialogue/liste de spinner?

Eh bien, ce n'est pas vraiment un dialogue. C'est une liste déroulante pour mon fileur.

I tryed:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 

    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1); 
    myToast.show(); 

    } 

    // Call super code so we dont limit default interaction 
    super.onKeyDown(keyCode, event); 

    return true; 
} 

Non travaillé.

J'ai aussi tryed:

public void onBackPressed() 
{ 


    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1); 
    myToast.show(); 

} 

J'ai même tryed cela avec primordiale. Donc, aucune des solutions ci-dessus ne fonctionne pour moi. J'ai trouvé ces deux sur stackoverflow mais pour une raison quelconque, ils ne fonctionnent pas pour moi. Bien sûr, ils fonctionnent quand il y a maintenant une boîte de dialogue montrant, mais quand ... font ils ne sont pas exécutés.

Des idées?

Alors mon

+0

ce qui n'a pas travaillé avec le premier extrait de code? – Mayank

Répondre

3

Essayez

if (keyCode == KeyEvent.KEYCODE_BACK) 
{ 

    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1); 
    myToast.show(); 
    return true; 
} 
+0

Pourquoi copiez-vous le même code si je l'ai marqué ne fonctionne pas? –

+2

return true devrait être dans le KEYCODE_BACK – user936414

2

voir ce

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     //Handle the back button 
     if(keyCode == KeyEvent.KEYCODE_BACK) { 
      //write your code... 
     } 
    } 
+0

Pourquoi copiez-vous le même code si je l'ai marqué ne fonctionne pas? –

1

essayer d'utiliser rejeter l'auditeur. une boîte de dialogue peut être ignorée en appuyant sur un bouton ou une touche de retour et en utilisant cet écouteur, vous pouvez savoir si l'utilisateur a appuyé sur un bouton ou une touche de retour (vous pouvez écouter onClick).

+0

Son un menu déroulant de spinners comment puis-je ajouter l'écouteur de rejeter à lui? –

3

d'une manière générale pour détecter si un dialogue a été annulée (retour bouton enfoncé) est de mettre en œuvre OnCancelListener, pas vraiment sûr si cela fonctionne sur filateurs bien!

2

essayer ...

public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_BACK) 
     { 

     Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1); 
     myToast.show(); 
    new Handler().postDelayed(new Runnable{ 
    public void run(){ 
       finish(); 
     } 
    }, 1000); 
     } 
    else{ 
     // Call super code so we dont limit default interaction 
     super.onKeyDown(keyCode, event); 
    } 

     return true; 
    } 
+0

Je ne peux pas attendre 1 sec après l'événement :( –

Questions connexes