Je veux que les utilisateurs de mon application Android quittent mon application lorsqu'ils appuyent sur une certaine activité. Peut-il être fait? P>
14 Réponses :
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); }
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é ()?
Vous pouvez essayer quelque chose comme ceci (affiche une boîte de dialogue pour confirmer la sortie): 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. P> P>
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>
Un bon moyen est d'attendre un deuxième dos
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.
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); }
utiliser system.exit (0); en balbacksed
Vous pouvez essayer celui-ci
public void onBackPressed() { moveTaskToBack(true); }
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. p>
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. p>
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.
Mettez-le dans chaque activité de votre manifeste: à l'arrière appuyez sur votre Activité Code>: P>
@Override
protected void onBackPressed() {
if (this.isFinishing()){
finish();
super.onBackPressed();
}
}
J'utilise cette méthode pour laisser une application à l'adresse arrière Appuyez sur:
@Override public void onBackPressed() { enter code here finish(); }
Cela ne ferme pas l'application. Juste l'activité actuelle
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 Mais comment utiliser la clé arrière du matériel pour faire votre travail? Vous devrez faire ce p> bonne chance p> p> ceci.finish () code> 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. p>
Je sais que c'est un ancien post. Mais cela pourrait être utile pour quelqu'un comme c'était pour moi, qui souhaite mettre en œuvre la même fonctionnalité dans leur application.
La solution pour identifier le double dos peut être effectuée en calculant le temps entre deux presses à dos. Si la différence est inférieure à 2 secondes (I.E. 2000 millisecondes), vous pouvez accepter cela comme double appuyez sur et quittez l'application. Sinon afficher le message Toast. p>
Une implémentation simple de ce serait: p> Le code peut être trouvé dans ce lien p> p>
@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(); }
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); }
Vous pouvez utiliser MOVETASKTOBACK () dans la méthode ONBackPressed () pour quitter l'application.
@Override public void onBackPressed() { moveTaskToBack(true); }
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