web-dev-qa-db-fra.com

Remplacement d'Android surBackPressed ()

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

46
Jilberta

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

124
codeMagic

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.

35
Erastus

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.

4
Sasanka Kudagoda

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. 

2
Pavlos

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();
}
1
Jay Patel

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.

0
dor00012

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();
}
0
Tabish khan

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.

0
Homa