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。后面的部分非常重要。设置工具栏,然后添加侦听器。