J'ai actuellement une activité qui, lorsqu'elle sera affichée, une notification s'affichera également dans la barre de notification.
C'est ainsi que lorsque l'utilisateur appuie sur la maison et que l'activité est poussée à l'arrière-plan, il peut revenir à l'activité via la notification.
Le problème survient lorsqu'un utilisateur appuie sur le bouton de retour, mon activité est détruite mais la notification reste telle que je veux que l'utilisateur puisse appuyer mais toujours accéder à l'activité via la notification. Mais quand un UTILISATEUR essaie cela, je reçois des pointeurs Null car il essaie de démarrer une nouvelle activité plutôt que de ramener l'ancienne.
Donc, essentiellement, je veux que le bouton Retour agisse exactement de la même manière que le bouton Accueil et voici comment j'ai essayé jusqu'à présent:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
return;
}
Cependant, le code ci-dessus semble toujours permettre à mon activité d'être détruite, comment puis-je empêcher ma activité d'être détruite lorsque le bouton retour est enfoncé?
la source
, the
<` devrait devenir un>
.Réponses:
Retirez votre écouteur de clé ou revenez
true
quand vous en avezKEY_BACK
.Vous avez juste besoin de ce qui suit pour attraper la touche retour (assurez-vous de ne pas appeler super in
onBackPressed()
).De plus, si vous prévoyez d'exécuter un service en arrière-plan, assurez-vous de regarder
startForeground()
et assurez-vous d'avoir une notification continue, sinon Android tuera votre service s'il a besoin de libérer de la mémoire.la source
Il était plus facile de l'implémenter avec une seule ligne de code:
la source
Je pense que ce que vous voulez, ce n'est pas de remplacer le bouton de retour (cela ne semble pas être une bonne idée - Android OS définit ce comportement, pourquoi le changer?), Mais d'utiliser le cycle de vie des activités et de conserver vos paramètres / données dans le Événement onSaveInstanceState (Bundle) .
Ensuite, vous utilisez onCreate (Bundle) pour tout retirer de ce bundle persistant et recréer votre état.
Considérez le pseudo-code ci-dessus pour vous orienter dans la bonne direction. La lecture du cycle de vie des activités devrait vous aider à déterminer la meilleure façon d'accomplir ce que vous recherchez.
la source
faites simplement cela ..
commentant le //super.onBackPressed (); fera l'affaire
la source
Essaye ça:
la source
Juste au cas où vous voudriez gérer le comportement du bouton de retour (en bas du téléphone) et du bouton d'accueil (celui à gauche de la barre d'action), cette activité personnalisée que j'utilise dans mon projet peut vous aider .
Exemple d'utilisation dans votre activité:
la source
la source
À Kotlin:
Pour plus d'informations, vous pouvez vérifier cela .
Il y a aussi une question spécifique sur le remplacement du bouton de retour dans Kotlin.
la source