android appuyant sur le bouton arrière doit quitter l'application

Lorsqu'un utilisateur appuie sur le bouton retour sur l'intention, l'application doit fermer. Comment puis-je m'assurer que l'application quitte lorsque le bouton de retour est appuyé?

39
demandé sur Erik Schierboom 2010-03-01 10:14:27

10 réponses

immédiatement après avoir commencé une nouvelle activité, en utilisant startActivity , assurez-vous d'appeler finish() pour que l'activité actuelle ne soit pas empilée derrière la nouvelle.

EDIT En ce qui concerne votre commentaire:

ce que vous suggérez n'est pas particulièrement comment l'application android flow fonctionne habituellement, et comment les utilisateurs s'attendent à ce qu'il fonctionne. Ce que vous peut si vous voulez vraiment, est de s'assurer que chaque startActivity menant à cette activité, est un startActivityForResult et a un écouteur onActivityResult qui vérifie pour un code de sortie, et bulles que retour. Vous pouvez en savoir plus ici . Fondamentalement, utilisez setResult avant de terminer une activité, pour définir un code de sortie de votre choix, et si votre activité mère reçoit ce code de sortie, vous le définissez dans que activité, et finir celui-ci, etc...

38
répondu David Hedlund 2010-03-01 09:29:15

dans mon activité à la maison, je remplace le" onBackPressed "par:

@Override
public void onBackPressed() {
   Intent intent = new Intent(Intent.ACTION_MAIN);
   intent.addCategory(Intent.CATEGORY_HOME);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(intent);
 }

donc si l'utilisateur est dans l'activité à la maison et appuyez sur retour, il va à l'écran d'accueil.

j'ai pris le code de aller à l'écran D'accueil Programmatically

82
répondu Hugo 2017-05-23 12:34:23

une meilleure expérience utilisateur:

/**
 * Back button listener.
 * Will close the application if the back button pressed twice.
 */
@Override
public void onBackPressed()
{
    if(backButtonCount >= 1)
    {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
    else
    {
        Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
        backButtonCount++;
    }
}
24
répondu Vlad Spreys 2015-10-01 14:55:05

pourquoi l'utilisateur n'a-t-il pas simplement appuyé sur le bouton Accueil? Ensuite, ils peuvent quitter votre application à partir de vos activités, et pas seulement un seul.

si vous craignez que votre application continue à faire quelque chose en arrière-plan. Assurez-vous de l'arrêter dans les commandes onPause et onStop pertinentes (qui seront déclenchées lorsque l'utilisateur appuie sur Home).

Si votre problème est que vous voulez la prochaine fois que l'utilisateur clique sur votre application pour qu'il puisse commencer retour au début, je recommande de mettre une sorte d'élément de menu ou un bouton UI sur l'écran qui ramène l'utilisateur à l'activité de départ de votre application. Comme l'oiseau twitter dans l'application twitter officielle, etc.

2
répondu Eric 2010-10-29 17:21:09

Utiliser onBackPressed méthode

@Override
public void onBackPressed() {
    finish();
    super.onBackPressed();
}

cela résoudra votre problème.

2
répondu Akila 2017-03-21 09:27:29

l'application ne sortira que s'il n'y a aucune activité dans la pile arrière. Ajoutez cette ligne dans votre manifeste android:noHistory="true" à toutes les activités que vous ne voulez pas être de retour empilés.Et puis pour fermer l'application appeler le finition () dans le OnBackPressed

<activity android:name=".activities.DemoActivity"
            android:screenOrientation="portrait"
            **android:noHistory="true"**
            />
1
répondu Sagar Devanga 2015-06-09 07:16:12

tout d'abord, Android ne vous recommande pas de faire cela dans le bouton précédent, mais plutôt en utilisant les méthodes cycle de vie fourni. Le bouton arrière ne doit pas détruire l'activité.

Les activités

sont ajoutées à la pile, accessibles à partir de la vue D'ensemble (bouton carré depuis qu'ils ont introduit la conception du matériau dans 5.0) lorsque le bouton de retour est appuyé sur la dernière activité restante de la pile UI. Si l'utilisateur souhaite fermer votre application, ils doivent glisser off (le fermer) dans le menu Vue d'ensemble.

votre application est responsable d'arrêter toutes les tâches et tâches de fond que vous ne voulez pas exécuter, sur les méthodes de cycle de vie onPause(), onStop() et onDestroy (). S'il vous plaît lire plus sur les cycles de vie et leur mise en œuvre correcte ici: http://developer.android.com/training/basics/activity-lifecycle/stopping.html

mais pour répondre à votre question, vous pouvez faire hacks à mettre en œuvre le comportement exact que vous voulez, mais comme je l'ai dit, il n'est pas recommandé :

@Override
 public void onBackPressed() {

// make sure you have this outcommented
// super.onBackPressed();
 Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.addCategory(Intent.CATEGORY_HOME);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);
}
1
répondu captainserious 2015-10-01 14:15:41

pour sortir d'une application Android, il suffit d'utiliser. dans votre activité principale, ou vous pouvez utiliser le fichier manifeste Android pour définir

android:noHistory="true"
1
répondu Uday Shah 2017-01-17 04:14:16

terminez votre activité_actuelle en utilisant la méthode finish() onBack method of your current_activity

et ajouter ensuite les lignes suivantes dans onDestroy de l'activité actuelle pour supprimer la force fermer

@Override
public void onDestroy()
{
    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
}
0
répondu Naveed Ahmad 2014-11-25 12:48:08

j'ai modifié la réponse de @Vlad_Spays pour que le bouton arrière fonctionne normalement à moins que ce soit le dernier élément de la pile, puis il invite l'utilisateur avant de quitter l'application.

@Override
public void onBackPressed(){
    if (isTaskRoot()){
        if (backButtonCount >= 1){
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }else{
            Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
            backButtonCount++;
        }
    }else{
        super.onBackPressed();
    }
}
0
répondu seekingStillness 2018-03-08 23:57:22