web-dev-qa-db-fra.com

Comment attraper l'icône de navigation, cliquez sur la barre d'outils de fragment?

J'ai un fragment de dialogue dans lequel j'ai une barre d'outils dans la mise en page. Je veux que le bouton de retour (icône de navigation) fonctionne dans la barre d'outils et quitte le fragment lorsque l'utilisateur clique dessus. Mais je ne parviens pas à saisir l'événement click sur l'icône de navigation de la barre d'outils dans le fragment (dialogue).

Voici comment j'obtiens une barre d'outils:

toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
toolbar.setTitle(itemType);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);

Voici mon fichier de mise en page pour le fragment de dialogue:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout          xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:orientation="vertical"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/panel_cyan"
    Android:id="@+id/rootLayout"
    >

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentStart="true"
    Android:layout_alignParentTop="true"
    Android:background="@color/color_primary"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

<ListView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:id="@+id/listViewItems"
    />

</RelativeLayout>

** Voici ce qui a été essayé jusqu'à présent mais a échoué **

Option Options cliquez sur id R.id.home

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id){
            case Android.R.id.home:
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

setNavigationOnClick () dans la barre d'outils:

toolbar.setNavigationOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "Back clicked!",     Toast.LENGTH_SHORT).show();
            }
        });
36
priyankvex

ajouter un bloc de code toolbar.setNavigationOnClickListener après setSupportActionBar(toolbar)

77
Dandong Wang

Cela fonctionne pour moi.

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(),"your icon was clicked",Toast.LENGTH_SHORT).show();
    }
});
13
Badr El Amrani
 toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case Android.R.id.home:

                  // do what ever you want here
            }
            return true;
        }
    });
3
user3877122