2012-10-15 2 views
1

Je développe une application android et quand j'appuie sur le bouton retour de mon appareil (temps de presse normal pour une personne, 1 seconde ou moins), il passe de mon activité à l'activité précédente (menu), puis quitte l'application. Mais si je tape le bouton de retour rapidement, il réagit comme prévu, il va au menu. J'ai essayé de trouver une solution mais sans succès. J'ai toujours essayé de remplacer le comportement par défaut du bouton précédent, mais sans succès non plus. Y a-t-il un moyen de définir un temps de réaction pour que le bouton de retour réagisse?Android Retour Bouton réagit trop rapidement

Un grand merci à l'avance!

P.S.- J'ai d'autres activités qui maintiennent le comportement attendu dans le bouton de retour lorsque pressé avec un temps de presse normal.

+1

Pourriez-vous s'il vous plaît poster le code où vous gérez les contre-presses? – Heskja

+1

C'est la chose, je ne gère pas la touche de retour, car le bouton de retour a le comportement par défaut que je veux avoir. –

+0

Pourriez-vous nous montrer la partie du code où vous démarrez vos activités alors? Avez-vous testé ce comportement sur d'autres appareils? – Heskja

Répondre

1

Je développais une option supplémentaire pour une application qui existe déjà, et j'ai découvert que je devrais étendre pas de l'activité d'Android, mais une activité déjà étendue appelée SEActivity. Donc, dans cette version étendue de l'activité, ils remplacent la méthode onKeyDown comme ceci:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     return true; 
    } 
    else 
     return super.onKeyDown(keyCode, event); 
} 

En étendant cette SEActivity, le bouton Précédent fonctionne avec le comportement attendu. Merci quand même :)

1

"Existe-t-il un moyen de régler le temps de réaction du bouton de retour pour réagir?"

Oui, vous pouvez simplement enregistrer le moment où le bouton est pressé et réagir différemment dans onBackPressed en calculant la (currentTime-lastTimePressed)

Pour permettre que cela fonctionne avec des activités précédentes, vous pouvez demander à des activités à startActivityForResult, de sorte que lorsque vous finissez votre activité, vous pouvez également transmettre le temps pour leur faire savoir s'ils doivent également quitter.

+1

Pourquoi est-ce que quelqu'un retarderait le temps de réponse depuis le moment où le bouton arrière est pressé pour qu'une action se produise réellement? Il y a probablement quelque chose qui ne va pas avec le code, donc encourageant le mauvais code et le mauvais design n'est pas sympa. – Heskja

+1

Ce n'est pas le meilleur modèle là-bas. Mais je peux def voir des cas où l'on voudrait savoir le temps entre deux boutons est pressé. Aussi, ma compréhension est qu'il veut réagir différemment en fonction des temps de pression des boutons, et non pas pour retarder le temps de réponse. – Edison

+1

@Edison Je voulais en fait retarder le temps de réponse, puisque le bouton de retour de mon activité actuelle semble revenir non seulement sur mon activité mais sur la précédente (le menu dans ce cas). La hiérarchie est ** App> Menu> Mon Écran **. Lorsque je clique sur ** Mon Écran **, il ne devrait revenir à un niveau que ** Menu **, mais il va en réalité à ** App ** et se ferme, comme si je revenais sur ** Menu **, ce que je n'ai pas fait. –