Est-il possible de remplacer onBackPressed () pour une seule activité?
Sur le bouton de retour, cliquez sur Je veux appeler une boîte de dialogue pour une activité spécifique, mais pour toutes les autres activités, je souhaite que cela fonctionne comme avant (passer aux activités précédentes). . .
Merci pour vos réponses à l'avance.
ÉDITÉ
Merci à tous pour vos réponses, j'avais déjà tout ce que vous m'aviez dit, mais mon problème était que lorsque je cliquais sur le bouton de retour d'une autre activité, j'allais à mon activité précédente pensais que cela ne fonctionnait pas, je pensais que cela annulait onBackPressed () dans toute l'application, maintenant je l'ai: D
Oui. Ne le remplacez que dans celle-ci Activity
avec
@Override
public void onBackPressed()
{
// code here to show dialog
super.onBackPressed(); // optional depending on your needs
}
ne mettez pas ce code dans une autre Activity
Remplacez la méthode onBackPressed()
selon l'exemple de codeMagic et supprimez l'appel à super.onBackPressed();
si vous ne souhaitez pas que l'action par défaut (terminer l'activité en cours) soit exécutée.
Vous pouvez simplement appeler onBackPressed () et si vous souhaitez qu'une activité s'affiche après le bouton de retour, vous devez mentionner
Intent intent = new Intent(ResetPinActivity.this, MenuActivity.class);
startActivity(intent);
finish();
cela a fonctionné pour moi.
Appelez simplement la méthode onBackPressed()
dans l'activité pour laquelle vous souhaitez afficher la boîte de dialogue et affichez-la à l'intérieur.
Il suffit d'utiliser le code suivant pour initialiser un champ
private int count = 0;
@Override
public void onBackPressed() {
count++;
if (count >=1) {
/* If count is greater than 1 ,you can either move to the next
activity or just quit. */
Intent intent = new Intent(ResetActivity.this, LoginActivity.class);
startActivity(intent);
finish();
overridePendingTransition
(R.anim.Push_left_in, R.anim.Push_left_out);
/* Quitting */
finishAffinity();
} else {
Toast.makeText(this, "Press back again to Leave!", Toast.LENGTH_SHORT).show();
// resetting the counter in 2s
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
count = 0;
}
}, 2000);
}
super.onBackPressed();
}
Le meilleur et le plus générique pour contrôler la musique est de créer une activité mère dans laquelle vous écrasez startActivity(Intent intent)
- vous y mettez shouldPlay=true
, Et onBackPressed()
- vous mettez shouldPlay = true
._onStop
- vous mettez une condition mediaPlayer.stop avec shouldPlay comme condition
Ensuite, il suffit d’étendre l’activité mère à toutes les autres activités et aucune duplication de code n’est nécessaire.
Essayez ceci
@Override
public void onBackPressed(){
super.onBackPressed();
Intent i=new Intent(Intent.ACTION_MAIN);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
finish();
}
Au début, vous devez considérer que si votre activité que j’ai appelée A étend une autre activité (B) et dans les deux cas,
si vous souhaitez utiliser la fonction onbackpressed, chaque code que vous avez dans B s’exécute également en A. Donc, si vous voulez les séparer, vous devriez les séparer. Cela signifie que A ne doit pas prolonger B, vous pouvez alors avoir une impression séparée pour chacun d’eux.