Afficher la flèche arrière dans la barre d'outils


496

Je migre de ActionBarvers Toolbardans ma candidature. Mais je ne sais pas comment afficher et définir l'événement de clic sur la flèche arrière Toolbarcomme je l'ai fait Actionbar.

entrez la description de l'image ici

Avec ActionBar, j'appelle mActionbar.setDisplayHomeAsUpEnabled(true). Mais il n'y a pas de méthode similaire comme celle-ci.

Quelqu'un a-t-il déjà fait face à cette situation et trouvé une manière de la résoudre?



Utilisez l'exemple getSupportActionBar () ici freakyjolly.com/how-to-add-back-arrow-in-android-activity
Code Spy

Réponses:


900

Si vous utilisez un, ActionBarActivityvous pouvez dire à Android d'utiliser Toolbarle ActionBarcomme suit:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);

Et puis appelle à

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

marchera. Vous pouvez également l'utiliser dans les fragments qui vous sont attachés, ActionBarActivitiesvous pouvez l'utiliser comme ceci:

((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

Si vous n'utilisez pas ActionBarActivitiesou si vous souhaitez obtenir la flèche de retour sur un Toolbarqui n'est pas défini comme votre, SupportActionBarvous pouvez utiliser ce qui suit:

mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mActionBar.setNavigationOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       //What to do on back clicked
   }
});

Si vous utilisez android.support.v7.widget.Toolbar, vous devez ajouter le code suivant à votre AppCompatActivity:

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

12
Repo officiel de l'icône de conception matérielle de googles github.com/google/material-design-icons/blob/master/navigation/…
MrEngineer13

70
Si vous utilisez la dernière version d'Appcompat-v7 (21.0.3 ou supérieure), vous pouvez utiliser R.drawable.abc_ic_ab_back_mtrl_am_alpha pour la flèche arrière dessinable, qui est incluse dans la bibliothèque de support.
Taeho Kim

23
Veuillez noter que getResources (). GetDrawable (...) est obsolète. Vous devez utiliser ContextCompat.getDrawable (context, ...) à la place.
Quentin S.

7
N'a pas fonctionné, ne trouve ni l'un ni l' R.drawable.abc_ic_ab_back_mtrl_am_alphaautre R.drawable.ic_action_back.
Henrique de Sousa

10
pour récupérer l'icône "retour" de la bibliothèque de support toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Bolein95

215

Je vois beaucoup de réponses mais voici la mienne qui n'est pas mentionnée auparavant. Cela fonctionne à partir d'API 8+.

public class DetailActivity extends AppCompatActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);

    // toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // add back arrow to toolbar
    if (getSupportActionBar() != null){
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // handle arrow click here
    if (item.getItemId() == android.R.id.home) {
        finish(); // close this activity and return to preview activity (if there is any)
    }

    return super.onOptionsItemSelected(item);
}

3
Cela ne fonctionne que si vous définissez la barre d'outils comme barre d'action. Ce n'est pas pour les barres d'outils autonomes.
Kuffs

20
Upvote for onOptionItemSelected()This complète ce que MrEngineer13 n'a pas couvert dans sa réponse.
Atul

2
Merci, cela a fonctionné pour moi. Semble être meilleur que d'utiliser l'écouteur de clics, je ne me soucie pas vraiment des barres d'outils autonomes
Mike76

Comment puis-je changer la couleur de la flèche?
Dmitry

Je n'avais pas besoin des lignes sous la ligne de commentaire "barre d'outils", ça marche bien.
Hack06 du

173

Il existe de nombreuses façons d'y parvenir, voici ma préférée:

Disposition:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:navigationIcon="?attr/homeAsUpIndicator" />

Activité:

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // back button pressed
        }
    });

13
l'utilisation de l'attribut de thème est bien meilleure que la plupart des autres suggestions de cette question
Pedro Loureiro

3
au lieu d'utiliser, setNavigationOnClickListener()vous pouvez ajouter case android.R.id.home:à l'intérieur «onOptionsItemSelected ()».
eugene

1
case android.R.id.homen'a pas fonctionné pour moi. donc après une recherche pendant un certain temps, votre réponse a fait l'affaire .. merci.
deejay

C'est la solution la plus authentique, surtout si vous souhaitez utiliser l'icône de retour par défaut du système Android.
Nauman Aslam

using toolbar.setNavigationOnClickListener {onBackPressed ()}
filthy_wizard

74

vous pouvez utiliser la méthode setNavigationIcon de la barre d'outils. Android Doc

mToolBar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);

mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        handleOnBackPress();
    }
});

1
Pourriez-vous ajouter quelques explications à votre réponse? Les réponses uniquement codées sont désapprouvées par SO.
klaxonner

1
Veuillez noter que la méthode setNavigationOnClickListener()a été ajoutée dans le niveau 21 et supérieur de l'
API

3
R.drawable.abc_ic_ab_back_mtrl_am_alpha est maintenant parti en support 23.2.0, utilisez plutôt la réponse acceptée.
Milan

25

Si vous ne voulez pas créer de personnalisé Toolbar, vous pouvez faire comme ça

public class GalleryActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...  
        getSupportActionBar().setTitle("Select Image");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

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

En toi AndroidManifest.xml

<activity
    android:name=".GalleryActivity"
    android:theme="@style/Theme.AppCompat.Light">        
</activity>

vous pouvez également le mettre android:theme="@style/Theme.AppCompat.Light"sur le <aplication>tag, pour l'appliquer à toutes les activités

entrez la description de l'image ici


2
Merci pourif (item.getItemId() == android.R.id.home)
Adizbek Ergashev

22
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setNavigationIcon(R.drawable.back_arrow); // your drawable
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed(); // Implemented by activity
        }
    });

Et pour API 21+ android:navigationIcon

<android.support.v7.widget.Toolbar
    android:navigationIcon="@drawable/back_arrow"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"/>

Doit être la réponse acceptée.
Anton Malyshev

17

J'ai utilisé cette méthode dans la documentation pour les développeurs Google :

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getActionBar().setDisplayHomeAsUpEnabled(true);
}

Si vous obtenez une exception de pointeur nul, cela peut dépendre du thème. Essayez d'utiliser un thème différent dans le manifeste ou utilisez-le alternativement:

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

Puis dans le manifeste, où j'ai défini l'activité parent pour l'activité actuelle:

<activity
        android:name="com.example.myapp.MyCurrentActivity"
        android:label="@string/title_activity_display_message"
     android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myapp.MyMainActivity" />
</activity>

J'espère que cela t'aidera!


1
Le lien google docs et le getSupportActionBar()travail. Merci!
Rick

15

Si vous étiez utilisez AppCompatActivityet vous êtes allé sur le chemin de ne pas l' utiliser, parce que vous vouliez pas obtenir le automatique ActionBarqu'il fournit, parce que vous voulez séparer le Toolbar, en raison de vos besoins de conception des matériaux et CoordinatorLayoutou AppBarLayout, alors, considérez ceci:

Vous pouvez toujours utiliser le AppCompatActivity, vous n'avez pas besoin d'arrêter de l'utiliser pour pouvoir utiliser un <android.support.v7.widget.Toolbar>dans votre xml. Désactivez simplement le style de barre d'action comme suit:

Tout d'abord, dérivez un style de l'un des thèmes NoActionBar que vous aimez dans votre styles.xml, j'ai utilisé Theme.AppCompat.Light.NoActionBarcomme ceci:

<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>
    ...
    ...
</style>

Dans le manifeste de votre application, choisissez le thème de style enfant que vous venez de définir, comme suit:

    <activity
        android:name=".activity.YourSuperCoolActivity"
        android:label="@string/super_cool"
        android:theme="@style/SuperCoolAppBarActivity">
    </activity>

Dans votre Activity Xml, si la barre d'outils est définie comme suit:

...
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        />
...

Ensuite, et c'est la partie importante, vous définissez la barre d'actions de support sur l'AppCompatActivity que vous étendez, de sorte que la barre d'outils de votre XML devienne la barre d'actions. Je pense que c'est une meilleure façon, car vous pouvez simplement faire les nombreuses choses qu'ActionBar permet, comme les menus, le titre d'activité automatique, la gestion de la sélection des éléments, etc. sans recourir à l'ajout de gestionnaires de clics personnalisés, etc.

Dans la substitution onCreate de votre activité, procédez comme suit:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_super_cool);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);
    //Your toolbar is now an action bar and you can use it like you always do, for example:
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} 

8
MyActivity extends AppCompatActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        toolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(arrow -> onBackPressed());
    }

Vous pouvez utiliser retrolambda.
Artemiy

c'est ce que j'ai et ça ne fonctionne pas. ne peux pas le comprendre.
filthy_wizard

7

Un moyen simple et facile d'afficher le bouton de retour sur la barre d'outils

Collez ce code dans la méthode onCreate

 if (getSupportActionBar() != null){

            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

Collez cette méthode de remplacement en dehors de la méthode onCreate

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId()== android.R.id.home) {

        finish();
    }
    return super.onOptionsItemSelected(item);
}

7

A Kotlin, ce serait

private fun setupToolbar(){
    toolbar.title = getString(R.string.YOUR_TITLE)
    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
    supportActionBar?.setDisplayShowHomeEnabled(true)
}

// don't forget click listener for back button
override fun onSupportNavigateUp(): Boolean {
    onBackPressed()
    return true
}


5

Dans le AppCompatActivitypar exemple, vous pouvez faire

public class GrandStatActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grand_stat);
    }

    @Override
    public void onResume() {
        super.onResume();

        // Display custom title
        ActionBar actionBar = this.getSupportActionBar();
        actionBar.setTitle(R.string.fragment_title_grandstats);

        // Display the back arrow
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    // Back arrow click event to go to the parent Activity
    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

}

4

Dans votre fichier manifeste pour l'activité où vous souhaitez ajouter un bouton de retour, nous utiliserons la propriété android: parentActivityName

        <activity
        android:name=".WebActivity"
        android:screenOrientation="portrait"
        android:parentActivityName=".MainActivity"
        />

PS Cet attribut a été introduit dans l'API niveau 16.


3

Cela a parfaitement fonctionné

public class BackButton extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_box);
        Toolbar chatbox_toolbar=(Toolbar)findViewById(R.id.chat_box_toolbar);
        chatbox_toolbar.setTitle("Demo Back Button");
        chatbox_toolbar.setTitleTextColor(getResources().getColor(R.color.white));
        setSupportActionBar(chatbox_toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        chatbox_toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Define Back Button Function
            }
        });
    }
}

3

Tout d'abord, vous devez initialiser la barre d'outils:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

puis appelez le bouton de retour dans la barre d'actions:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

2

Si vous souhaitez obtenir la flèche de retour sur une barre d'outils qui n'est pas définie en tant que SupportActionBar:

(kotlin)

val resId = getResIdFromAttribute(toolbar.context, android.R.attr.homeAsUpIndicator)
toolbarFilter.navigationIcon = ContextCompat.getDrawable(toolbar.context, resId)
toolbarFilter.setNavigationOnClickListener { fragmentManager?.popBackStack() }

pour obtenir des res à partir des attributs:

@AnyRes
fun getResIdFromAttribute(context: Context, @AttrRes attr: Int): Int {
    if (attr == 0) return 0
    val typedValueAttr = TypedValue()
    context.theme.resolveAttribute(attr, typedValueAttr, true)
    return typedValueAttr.resourceId
}

1

Ajoutez ceci au xml de l'activité dans le dossier de disposition:

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">
    <android.support.v7.widget.Toolbar
        android:id="@+id/prod_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>

Rendez la barre d'outils cliquable, ajoutez-les à la méthode onCreate:

Toolbar toolbar = (Toolbar) findViewById(R.id.prod_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

1

Peut-être un moyen plus fiable d'obtenir l'icône en haut de votre thème (si vous n'utilisez pas la barre d'outils comme barre d'action):

toolbar.navigationIcon = context.getDrawableFromAttribute(R.attr.homeAsUpIndicator)

Afin de transformer l'attribut de thème en un dessinable, j'ai utilisé une fonction d'extension:

fun Context.getDrawableFromAttribute(attributeId: Int): Drawable {
    val typedValue = TypedValue().also { theme.resolveAttribute(attributeId, it, true) }
    return resources.getDrawable(typedValue.resourceId, theme)
}

0

Si vous utilisez DrawerLayout avec ActionBarDrawerToggle , puis pour afficher le bouton Retour au lieu du bouton Menu (et vice versa), vous devez ajouter ce code dans votre activité:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.application_name, R.string.application_name);
    mDrawerLayout.addDrawerListener(mDrawerToggle);

    mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_arrow_back_white_32dp);
    mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onBackPressed(); // Or you can perform some other action here when Back button is clicked.
        }
    });
    mDrawerToggle.syncState();
    // ...
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item))
        return true;

    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        // ...
    }

    return super.onOptionsItemSelected(item);
}

public void showBackInToolbar(boolean isBack) {
    // Remove next line if you still want to be able to swipe to show drawer menu.
    mDrawerLayout.setDrawerLockMode(isBack ? DrawerLayout.LOCK_MODE_LOCKED_CLOSED : DrawerLayout.LOCK_MODE_UNLOCKED);
    mDrawerToggle.setDrawerIndicatorEnabled(!isBack);
    mDrawerToggle.syncState();
}

Ainsi, lorsque vous devez afficher le bouton Retour au lieu du bouton Menu , appelez showBackInToolbar (true) et si vous avez besoin du bouton Menu , appelez showBackInToolbar (false) .

Vous pouvez générer une flèche de retour (ic_arrow_back_white_32dp) ici , recherchez arrow_back dans la section Clipart (utilisez 32dp par défaut avec un remplissage de 8dp). Sélectionnez simplement la couleur souhaitée.


0

Vous pouvez toujours ajouter un Relative layoutou un Linear Layoutdans votre Toolbaret placer une vue Image pour l'icône de retour ou fermer l'icône n'importe où dans la barre d'outils comme vous le souhaitez

Par exemple, j'ai utilisé la disposition relative dans ma barre d'outils

 <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar_top"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:minHeight="?attr/actionBarSize"
                android:nextFocusDown="@id/netflixVideoGridView"
                app:layout_collapseMode="pin">

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">


                    <TextView

                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Myflix"
                        android:textAllCaps="true"
                        android:textSize="19sp"
                        android:textColor="@color/red"
                        android:textStyle="bold" />


                    <ImageView
                        android:id="@+id/closeMyFlix"
                        android:layout_alignParentRight="true"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        app:srcCompat="@drawable/vector_close" />


                </RelativeLayout>

            </android.support.v7.widget.Toolbar>

Et cela ressemble à ceci:

entrez la description de l'image ici

Vous pouvez ajouter un écouteur de clics sur cette vue d'image à partir d'une activité ou d'un fragment comme celui-ci.

  closeMyFlix.setOnClickListener({
            Navigator.instance.showFireTV(  activity!!.supportFragmentManager)
        })

0

Avec Kotlin c'est devenu:

Xml:

<include
android:id="@+id/tbSignToolbar "
layout="@layout/toolbar_sign_up_in"/>

Dans votre activité: -

setSupportActionBar(tbSignToolbar as Toolbar?)//tbSignToolbar :id of your toolbar 
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)

0

Si vous utilisez la navigation JetPack.

Voici la disposition de MainActivity

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                               xmlns:app="http://schemas.android.com/apk/res-auto"
                                               xmlns:tools="http://schemas.android.com/tools"
                                               android:layout_width="match_parent"
                                               android:layout_height="match_parent"
                                               tools:context=".MainActivity">

<androidx.appcompat.widget.Toolbar
        android:id="@+id/toolBar"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

</androidx.appcompat.widget.Toolbar>

<fragment
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintTop_toBottomOf="@id/toolBar"
        app:layout_constraintBottom_toTopOf="parent"
        app:navGraph="@navigation/nav_graph"/>

Configurez votre barre d'outils dans votre activité comme ci-dessous dans onCreate () de votre classe d'activité.

val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment? ?: return

val navController = navHostFragment.findNavController()
val toolBar = findViewById<Toolbar>(R.id.toolBar)
setSupportActionBar(toolBar) // To set toolBar as ActionBar
setupActionBarWithNavController(navController)

setupActionBarWithNavController (navController) Crée un bouton de retour sur la barre d'outils si nécessaire et gère la fonctionnalité backButton. Si vous devez écrire une fonctionnalité CustomBack, créez un callBack comme ci-dessous sur votre méthode fragment onCreate ()

val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
        // Handle the back button event
    }

De la documentation: https://developer.android.com/guide/navigation/navigation-custom-back


0

Si vous utilisez la androidx.appcompat.app.AppCompatActivityseule utilisation:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Définissez ensuite simplement dans l' Manifest.xmlactivité parent.

<activity
    android:name=".MyActivity"
    ...>
  <meta-data
      android:name="android.support.PARENT_ACTIVITY"
      android:value=".ParentActivity" />
</activity>

Au lieu de cela, si vous utilisez un Toolbaret que vous souhaitez un comportement personnalisé, utilisez simplement:

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar" 
    app:navigationIcon="?attr/homeAsUpIndicator"
    .../>

et dans votre activité:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //....
    }
});
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.