9
votes

Laisser l'application Android avec bouton arrière

Je veux que les utilisateurs de mon application Android quittent mon application lorsqu'ils appuyent sur une certaine activité. Peut-il être fait?


4 commentaires

Enregistrez l'état d'activité dans Pref partagé


Ce sera mieux si vous décrivez le flux de vos activités


Voulez-vous dire que vous voulez quitter complètement l'application et ne pas retourner à l'activité précieuse?


Y a-t-il une autre façon pour l'utilisateur de revenir à une activité précédente ou non? Sinon, vous pouvez simplement éliminer la pile d'activités en ajoutant les options appropriées à votre intention de créer «certaines activités» dont vous parlez. Plus ici


14 Réponses :


0
votes

Vous pouvez obtenir n'importe quoi avec remplacement du bouton arrière.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Do whatever you want with your activity
        // And for closing the whole app, you can use System.exit() which is absolutely not recomended
        return true;
    }
    return super.onKeyDown(keyCode, event);
}


2 commentaires

Je ne pense pas que cela répond à la question de OP sur la façon de quitter une application.


Pourquoi ne pas utiliser surbackprimé ()?



6
votes

Vous pouvez essayer quelque chose comme ceci (affiche une boîte de dialogue pour confirmer la sortie): xxx

Il faut noter que cela est mentionné dans les commentaires ci-dessous qui sortaient une application avec système.exit est non recommandé. Une manière plus "correcte" serait probablement de diffuser une intention sur le dos pressé et si les activités de votre application ont reçu l'intention se terminant eux-mêmes.


1 commentaires

Cela ne le retournerait-il pas simplement à l'activité précédente comme le bouton arrière? développeur.android.com/reference/andrroid/app/... < / a>



7
votes

Un bon moyen est d'attendre un deuxième dos xxx


4 commentaires

C'est une voie horrible, car elle brise totalement l'expérience utilisateur. Bien qu'il soit légèrement moins horrible que de sauter une boîte de dialogue lorsque le dos est enfoncé.


Il est utilisé dans des applications bien connues et des personnes comme elle, c'est beaucoup moins contraignante qu'un pop up (oui / non) et donne à l'utilisateur un choix simple


Malheureusement oui. De nombreuses applications sur Android ont brisé UX, mais il n'y a aucune raison d'encourager les gens à continuer à le faire. En ce qui concerne le choix - l'utilisateur a déjà choisi de quitter l'activité actuelle lorsqu'il est repoussé. Il n'est pas nécessaire de les confondre.


Je ne pense pas que nous puissions parler de "UX cassé" ici. Donner à l'utilisateur une information simple sur ce qu'il est sur le point de faire peut avoir son utilisation en fonction de la situation.



2
votes

Vous pouvez remplacer OneBackPressed () dans l'activité et faire ce que vous voulez. Voici le code qui quitte l'application lorsque l'arrière est enfoncé:

@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);
}


1 commentaires

utiliser system.exit (0); en balbacksed



6
votes

Vous pouvez essayer celui-ci

public void onBackPressed() {
    moveTaskToBack(true);
}


0 commentaires

2
votes

Il semble que vous demandez que vous demandez enfreindre le but du bouton arrière et du flux attendu d'une application. Un utilisateur s'attendrait à une appui sur le bouton arrière pour les renvoyer à l'écran d'activité précédent.

Si vous souhaitez terminer l'application complète avec le bouton arrière, chaque fois que vous utilisez le démarrage (), suivez-le avec un appel à terminer (). Cela fermera l'activité actuelle au fur et à mesure que vous le laissez si l'utilisateur appuie sur le bouton arrière, ils quitteront votre application.


1 commentaires

Il y a des moments où vous ne voulez pas retourner à l'écran d'activité précédent, comme de retourner à l'écran de connexion de l'écran d'accueil ou de revenir à un écran de démarrage.



5
votes

Mettez-le dans chaque activité de votre manifeste: xxx pré>

à l'arrière appuyez sur votre Activité Code>: P>

@Override
protected void onBackPressed() {
    if (this.isFinishing()){ 
        finish();
        super.onBackPressed();
    }
}


0 commentaires


1
votes

J'utilise cette méthode pour laisser une application à l'adresse arrière Appuyez sur:

@Override
public void onBackPressed() {
enter code here
    finish();
}


1 commentaires

Cela ne ferme pas l'application. Juste l'activité actuelle



2
votes

Tout d'abord, il est complètement étrange que vous souhaitiez fermer votre application car normalement si l'utilisateur quitte votre application, Android gère le reste de celui-ci et décide soit de la fermer, soit de la garder en pause en fonction de l'état de la mémoire de l'appareil. un travail parfait, ce qui signifie que vous ne devriez pas être inquiet à ce sujet.

Mais si vous souhaitez fermer votre application, il n'y a qu'une seule activité en cours d'exécution (au moment de la pression sur le bouton arrière dans votre cas). l'activité ferme l'application entière. Ce que je veux dire, c'est que si vous avez transmis à l'activité en cours à l'aide d'une intention et que vous n'avez pas fermé l'activité précédente, utilisez ensuite ceci.finish () ferme juste l'activité actuelle et vous rappelle à l'activité de la pause précédente. , sinon il ferme toute l'application. Considérez le fait qu'une activité peut utiliser un fragmet et des fragments peut être sans aménagements. Ensuite, il semble que l'application soit fermée alors qu'elle est toujours en marche.

Mais comment utiliser la clé arrière du matériel pour faire votre travail? Vous devrez faire ce xxx

bonne chance


0 commentaires


0
votes
@Override
    public void onBackPressed(){ 
         new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
         .setMessage("Are you sure you want to exit?")
         .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int which) {
                 Intent intent = new Intent(Intent.ACTION_MAIN);
                  intent.addCategory(Intent.CATEGORY_HOME);
                  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                  startActivity(intent);
             }
         }).setNegativeButton("No", null).show();

    }

0 commentaires

0
votes

Voici une méthode prête pour gérer la transplormité () lorsque vous appuyez deux fois sur deux fois à la fois et appelez une boîte de dialogue de confirmation:

/**
 * Overrides Back Pressed Button handler.
 * Single continuous press custom clear in your activity.
 * Double continuous press - confirmation dialog to close all activities and exit to Android.
 */
@Override
public void onBackPressed() {

if (isBackPressedTwice) {

  new AlertDialog.Builder(this)
    .setCancelable(false)
    .setIcon(
      R.drawable.exit)
    .setTitle(
      getString(
        R.string.exit))
    .setMessage(
      getString(
        R.string.close_application))
    .setNegativeButton(
      getString(
        R.string.no),
      null)
    .setPositiveButton(
      getString(
        R.string.yes),
      new DialogInterface.OnClickListener() {
        @Override
        public void onClick(
          DialogInterface dialog,
          int which) {

          finishAffinity();

          return;
        }
      })
    .show();
} else {
  // Custom activity clearing operations.
}

this.isBackPressedTwice = true;

new Handler().postDelayed(
  new Runnable() {
    @Override
    public void run() {

      isBackPressedTwice = false;
    }
  },
  1000);
}


0 commentaires

1
votes

Vous pouvez utiliser MOVETASKTOBACK () dans la méthode ONBackPressed () pour quitter l'application.

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}


0 commentaires