2010-06-18 10 views
0

J'ai une application Android qui démarre une nouvelle activitéApp se bloque sur le bouton arrière/Activités et Intentions

Intent startAuthorization = new Intent(AndroidActivity, AuthorizeUser.class);  
startActivityForResult(startAuthorization,4711); 

Quand cette nouvelle activité se fait (un bouton cliqué sur OK) J'appelle

setResult(RESULT_OK, returnResult); 
finish(); 

Ce qui fonctionne bien. Dans le cas où l'utilisateur ne clique pas sur le bouton OK mais utilise le bouton de retour du téléphone (cette flèche pointant vers la gauche) l'application a une force de fermeture. J'ai mis un point d'arrêt sur la première ligne de ma méthode onActivityResult mais le débogueur ne s'arrête jamais là. Je n'ai aucune idée d'où vient le problème - comment savoir? Y at-il une méthode que je dois écraser pour gérer ce bouton de retour?

+1

Pouvez-vous coller la sortie logcat du moment de votre application se bloque? Il devrait y avoir une exception Java nous montrant plus de détails sur la raison pour laquelle votre application est la fermeture forcée. – Janusz

+0

La méthode pour remplacer le comportement du bouton de retour est appelée onBackPressed(). Mon soupçon est que votre activité précédente est détruite et quand vous appuyez sur de retour, vous n'avez pas cette activité sur la pile, mais un pointeur nul qui provoque le crash. Certains journaux seraient utiles cependant. Ceci est la description officielle de l'onBackPressed() à https://developer.android.com/reference/android/app/Activity.html#onBackPressed() –

Répondre

1

Essayez ceci si vous ne trouvez pas de meilleure solution à votre problème. remplacer l'événement onKeyDown pour empêcher votre application de revenir en arrière lorsque vous appuyez sur le bouton

public boolean onKeyDown(int keyCode, KeyEvent msg){ 
    if((keyCode == KeyEvent.KEYCODE_BACK) || (keyCode == KeyEvent.KEYCODE_HOME) 
     || (keyCode == KeyEvent.KEYCODE_CALL)) 
     return false; 
    else 
     return true; 
} 
Questions connexes