Comment fermer l'activité et revenir à l'activité précédente dans Android

J'ai une activité principale, que lorsque je clique sur un bouton, lance une nouvelle activité, j'ai utilisé le code suivant pour le faire:

Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); 

Le code ci-dessus a été exécuté à partir de l'activité principale.

Maintenant, dans ma nouvelle activité appelée par l'activité principale, j'ai un bouton de retour. Lorsque je clique sur ce bouton arrière, je souhaite que ma nouvelle activité se ferme et qu'elle doit revenir à l'activité principale d'origine.

J'ai essayé d'appeler super.finish() et juste finish() (de la nouvelle activité), mais cela ferme alors toute mon application (y compris mon activité principale).

Comment puis-je simplement fermer l'activité actuellement concentrée, puis revenir à l'activité principale?

ÉDITÉ

Le fait que le bouton de retour de mon téléphone ferme aussi toute l'application, m'amène à penser que j'ai démarré la deuxième activité de manière incorrecte?


OK J'ai regardé,

J'ai créé une activité de paramètres qui utilise le même code de manifeste et le même code pour démarrer l'activité.

Pour les réglages Activité lorsque je presse le bouton Précédent, il retourne à l'activité principale.

Avec l'activité mentionnée ci-dessus dans la question principale, elle sort simplement de toute mon application.

Donc, le problème ne semble pas être avec le code pour terminer l'activité, mais l'activité elle-même.

  • Démarrer une nouvelle activité à partir du fragment
  • Remplacer la transition en attente avec l'objet d'animation au lieu de l'ID de la ressource
  • Pourquoi la fonction ne reçoit-elle pas les données de php dans Android?
  • Garder l'activité lorsque l'écran est éteint
  • SharedPreferences Effacer / Enregistrer
  • Android 1.6 & Fragment & Tabhost
  • NoSuchMethod: isDestroyed ()
  • Comment naviguer d'un écran à un autre écran
  • 15 Solutions collect form web for “Comment fermer l'activité et revenir à l'activité précédente dans Android”

    Je pense que vous appelez la finish() dans MainActivity lorsque vous démarrez votre SettingsActivity

    OU

    Par erreur, vous avez défini l' android:noHistory = "true" dans MainActivity dans AndroidManifest.xml.

    En appuyant sur la touche arrière, l'activité se finish automatiquement.

    OU

    Avant de passer à votre "ParamètresActivité", vous avez appelé fin () dans votre MainActivity, ce qui provoque le bouton de pression revenir à l'écran principal puisque MainActivity a déjà été tuée.

    Vous pouvez revenir à l'activité précédente en appelant simplement finish () dans l'activité sur laquelle vous vous trouvez. Notez tout code après la fin () l'appel sera exécuté – vous pouvez simplement faire un retour après l'appel terminé () pour corriger cela.

    Si vous souhaitez renvoyer les résultats à l'activité un, alors lorsque vous démarrez l'activité deux, vous devez:

     startActivityForResults(myIntent, MY_REQUEST_CODE); 

    À l'intérieur de votre activité appelée, vous pouvez ensuite obtenir l'intention du paramètre onCreate () ou utilisé

     getIntent(); 

    Pour configurer, renvoyer un résultat à l'activité un, alors dans l'activité deux faire

     setResult(Activity.RESULT_OK, MyIntentToReturn); 

    Si vous n'avez pas l'intention de revenir, dites simplement

     setResult(Activity.RESULT_OK); 

    Si l'activité a de mauvais résultats, vous pouvez utiliser Activity.RESULT_CANCELED (ceci est utilisé par défaut). Ensuite, dans l'activité que vous faites

     onActivityResult(int requestCode, int resultCode, Intent data) { // Handle the logic for the requestCode, resultCode and data returned... } 

    Pour terminer l'activité 2, utilisez les mêmes méthodes avec la finition () comme décrit ci-dessus avec vos résultats déjà définis.

    Lorsque vous cliquez sur votre bouton, vous pouvez l'appeler:

     super.onBackPressed(); 

    Si vous utilisez un fragment, vous devez utiliser

     getActivity().onBackPressed(); 

    Si vous utilisez une seule activité, vous pouvez utiliser

     finish(); 
     Button edit = (Button) view.findViewById(R.id.yourButton); edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(this, YourMainActivity.class); startActivity(intent); finish(); } }); 

    Essayez ce code au lieu de finish :

    onBackPressed();

    Cela ferme l'application entière:

     this.finish(); 

    Juste ne pas appeler finish() sur votre MainActivity cela élimine le besoin de remplacer votre onBackPressed() dans votre SecondActivity sauf si vous faites d'autres choses dans cette fonction. Si vous ressentez le "besoin" de ce bouton arrière, vous pouvez simplement appeler finish() sur SecondActivity et cela vous MainActivity à votre MainActivity tant que vous n'avez pas appelé finish()

    Vous faites cela trop dur. Si je comprends ce que vous essayez de faire correctement, le bouton «arrière» intégré et l'Android lui-même feront tout le travail pour vous: http://developer.android.com/guide/components/tasks-and-back- Stack.html

    En outre, la mise en œuvre d'un bouton "retour" personnalisé enfreint Core App Quality Guideline UX-N1: http://developer.android.com/distribute/googleplay/quality/core.html

    Je crois que votre deuxième activité n'est probablement pas liée à votre activité principale en tant qu'activité enfantine. Vérifiez votre fichier AndroidManifest.xml et AndroidManifest.xml si l'entrée <activity> pour votre activité enfant inclut un attribut android:parentActivityName . Ça devrait ressembler a quelque chose comme ca:

     <?xml ...?> ... <activity android:name=".MainActivity" ...> </activity> <activity android:name=".ChildActivity" android:parentActivityName=".MainActivity" ...> </activity> ... 

    Je ne sais pas si cela est même utile ou non, mais je rencontrais le même problème et j'ai trouvé un moyen assez simple, avec seulement une variable booléenne globale et une action onResume (). Dans mon cas, mon Activité C si elle est cliquée dans un bouton spécifique, elle devrait déclencher la finition () de l'Activité B!

    Activity_A -> Activity_B -> Activity_C

    Activity_A (s'ouvre normalement Activity_B)

    Activity_B (sur un bouton, cliquez sur Activity_C):

     // Global: boolean its_detail = false; // ------- SharedPreferences prefs = getApplicationContext().getSharedPreferences("sharedpreferences", 0); boolean v = prefs.getBoolean("select_client", false); its_detail = v; startActivity(C); @Override public void onResume(){ super.onResume(); if(its_detail == true){ finish(); } } 

    Donc, chaque fois que je clique sur le bouton de l'activité C, il fonctionnerait la fonction "onResume ()" de l'activité B et revenir à l'activité A.

     { getApplicationContext.finish(); } 

    Essayez cette méthode …

    Il se peut que tu appelles fin (); Dans l'événement du bouton de clic, l'activité principale est fermée juste après avoir cliqué sur le bouton et lorsque vous revenez de l'activité suivante, l'application est sortie car l'activité principale est déjà fermée et qu'il n'y a pas d'activité active.

      @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if ( id == android.R.id.home ) { finish(); return true; } return super.onOptionsItemSelected(item); } 

    Essayez cela, cela fonctionne à la fois sur le bouton arrière de la barre d' outils en tant que bouton arrière du matériel .

    Finish ferme l'application entière, c'est quelque chose que je déteste dans le développement d'Android, pas fini, ça va bien mais qu'ils ne respectent pas la syntaxe qu'ils ont

     startActivity(intent) 

    Pourquoi pas

    CloseActivity (intention)?

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.