Android 如何从片段中捕捉工具栏上的导航图标单击?

Android 如何从片段中捕捉工具栏上的导航图标单击?,android,android-fragments,toolbar,Android,Android Fragments,Toolbar,我有一个对话框片段,其中有一个布局中的工具栏。 我想使返回按钮(导航图标)在工具栏中工作,并在单击时退出片段。但我无法捕捉(对话框)片段中工具栏导航图标上的单击事件 以下是我获得工具栏的方式: toolbar = (Toolbar) rootView.findViewById(R.id.toolbar); toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); toolbar.setTitle(itemType);

我有一个对话框片段,其中有一个布局中的工具栏。 我想使返回按钮(导航图标)在工具栏中工作,并在单击时退出片段。但我无法捕捉(对话框)片段中工具栏导航图标上的单击事件

以下是我获得工具栏的方式:

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);
toolbar.setNavigationOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "Back clicked!",     Toast.LENGTH_SHORT).show();
            }
        });
以下是对话框片段的布局文件:

<?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>
工具栏上的setNavigationOnClick():

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);
toolbar.setNavigationOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "Back clicked!",     Toast.LENGTH_SHORT).show();
            }
        });

setSupportActionBar(工具栏)
之后添加代码块
工具栏。setNavigationOnClickListener
这对我很有用

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(),"your icon was clicked",Toast.LENGTH_SHORT).show();
    }
});

您是否
设置了选项菜单(true)在你的片段中?是的。我有设置选项菜单(真);在onCreate()中,如果您已将HasOptionMenu设置为true,并且正在使用超级调用覆盖
onCreateOptions菜单
,则将触发
onOptions项Selected
。你能不能把调试点放在选项ItemSelected中并检查它是否被调用?这就是问题所在。导航图标对单击没有响应。我尝试将日志放入onOptionItemSelected,但未触发。是否从活动的
onOptionItemSelected
返回false?如果
活动
未使用该事件,则只有它将触发
片段
事件。检查@Trancer for home按钮方法在onOptionItemSelected开关(item.getItemId()){case android.R.id.home:Toast.makeText(这是“home Clicked…”,Toast.LENGTH_SHORT)。show();break;}@Abhishek,您的方法不起作用,也不正确。我解决了这个问题:工具栏中的所有导航图标都由OST控制。这是“主页”按钮,您首先需要将其设置为工具栏。setNavigationIcon(可绘制),然后您可以使用listener是的,这在有工具栏时起作用。setNavigationIcon(可绘制),我们也可以将其设置为上方的listener。后面的部分非常重要。设置工具栏,然后添加侦听器。