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();
}
});
ajouter un bloc de code toolbar.setNavigationOnClickListener
après setSupportActionBar(toolbar)
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();
}
});
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;
}
});