149 votes

Comment mettre en œuvre le bouton retour de la barre d'action Android ?

J'ai une activité avec une vue de liste. Lorsque l'utilisateur clique sur l'élément, la "visionneuse" de l'élément s'ouvre :

List1.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

        Intent nextScreen = new Intent(context,ServicesViewActivity.class);
        String[] Service = (String[])List1.getItemAtPosition(arg2);

        //Sending data to another Activity
        nextScreen.putExtra("data", datainfo);
        startActivityForResult(nextScreen,0);
        overridePendingTransition(R.anim.right_enter, R.anim.left_exit);
    }
});

Cela fonctionne bien, mais dans la barre d'action, la flèche de retour à côté de l'icône de l'application ne s'active pas. Est-ce que quelque chose m'échappe ?

66 votes

getActionBar().setDisplayHomeAsUpEnabled(true); dans onCreate et switch (item.getItemId()) {case android.R.id.home: onBackPressed();break;} sur onOptionsItemSelected ? les deux dans ServicesViewActivity

8 votes

Pourquoi ne pas répondre par des étagères ?

7voto

ldd Points 41

Annotations Android :

@OptionsItem(android.R.id.home)
void homeSelected() {
    onBackPressed();
}

Source : https://github.com/excilys/androidannotations

6voto

Inzimam Tariq IT Points 3885

Je pense onSupportNavigateUp() est le moyen le plus simple et le meilleur pour le faire

Vérifiez le code dans ce lien Cliquez ici pour le code complet

1 votes

Super ! Ça marche pour moi. Merci !

3voto

Vivek Hande Points 181

https://stackoverflow.com/a/46903870/4489222

Pour y parvenir, il y a simplement deux étapes,

Etape 1 : Allez dans AndroidManifest.xml et dans le tag ajoutez le paramètre - Android:parentActivityName=".home.HomeActivity"

exemple :

 <activity
    android:name=".home.ActivityDetail"
    android:parentActivityName=".home.HomeActivity"
    android:screenOrientation="portrait" />

Étape 2 : dans ActivityDetail, ajoutez votre action pour la page/activité précédente.

exemple :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
      case android.R.id.home: 
          onBackPressed();
          return true;
   }
   return super.onOptionsItemSelected(item);}
}

1voto

Kumar VL Points 41

Les étapes suivantes sont bien suffisantes pour le bouton arrière :

Étape 1 : Ce code doit être dans Manifest.xml

<activity android:name=".activity.ChildActivity"
        android:parentActivityName=".activity.ParentActivity"
        android:screenOrientation="portrait">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".activity.ParentActivity" /></activity>

Étape 2 : Tu ne donneras pas

finish();

dans votre activité parentale tout en démarrant l'activité enfant.

Étape 3 : Si vous avez besoin de revenir à l'activité parentale depuis l'activité enfant, il vous suffit de donner ce code pour l'activité enfant.

startActivity(new Intent(ParentActivity.this, ChildActivity.class));

1voto

Kartik Garasia Points 176
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

sur onCreated pour les nouveaux apis.

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