5 votes

Android - Cliquez sur l'icône de l'application ActionBar, créez une nouvelle instance d'activité.

J'ai une ActionBar dans mon application Android (niveau 14 de l'API). Il y a un bouton d'accueil avec l'icône de mon application. Dans MainActivity, j'écris un texte court dans une vue EditText. Lorsque je navigue vers PreferenceActivity, l'icône se transforme en flèche pour me signaler que je peux naviguer vers l'activité d'accueil (MainActivity).

  // PreferenceActivity-onCreate
  ActionBar actionBar = getActionBar();
  actionBar.setDisplayHomeAsUpEnabled(true);

Je clique sur l'icône de l'application dans la barre d'action pour revenir à l'activité principale.

// PreferenceActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
   switch (item.getItemId()) 
   {
     case android.R.id.home:
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        return true;
     default:
        return super.onOptionsItemSelected(item);
   }
}

Maintenant, ma MainActivity a été créée à nouveau et le texte dans EditText a disparu. J'ai pensé que je pouvais maintenir en vie l'activité principale avec die Intent.FLAG_ACTIVITY_CLEAR_TOP. Je veux avoir un comportement comme si j'utilisais mon bouton de retour sur l'appareil.

7voto

David Wasser Points 23169

Si vous souhaitez revenir à une instance existante de l'application MainActivity vous devez le faire :

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

L'utilisation de CLEAR_TOP seul provoque une nouvelle instance de MainActivity à créer.

0voto

kpsfoo Points 142

Je pense que c'est la bonne façon de procéder. https://stackoverflow.com/a/15933890/238768

L'utilisation de Intent.FLAG_ACTIVITY_CLEAR_TOP provoquera le comportement exactement opposé de ce que Gepro veut faire !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X