- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我为我的其中一个操作栏 MenuBar 设置了一个自定义 View ,如下所示
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.loop_thread, menu);
ImageView iv = (ImageView)(getLayoutInflater().inflate(R.layout.image_container, null));
menu.findItem(R.id.action_filter).setActionView(iv);
...
但是当我在我的应用程序中点击该菜单项时,onOptionsItemSelected()
不会被调用。 (我已经通过在方法开始时设置断点来验证这一点)。如果我在操作栏中点击其他按钮,则会调用 onOptionsItemSelected()。
这是自定义 View 的 xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ibtnFilterMenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:src="@drawable/btn_action_down_arrow"
style = "@android:style/Widget.ActionButton"/>
我也尝试在菜单 xml 文件上设置操作 View :
<item android:id="@+id/action_filter"
android:title="@string/filter_options"
android:actionLayout="@layout/image_container"
android:orderInCategory="100"
android:showAsAction="ifRoom" />
注意:我知道我可以使图像可点击,并为它手动设置一个 onClickListener,但为了学习,我想深入了解一下。
最佳答案
似乎膨胀和绘制 Action 项的底层代码没有连接由 setActionView()
或 android:actionLayout="设置的自定义布局的内容@layout/image_container"
。
可能是因为布局可以是任何东西,而只是一个按钮或图像。所以我必须手动设置图标的 onClickListener
。出于组织的目的,我只是从我的图标的 OnClick
方法中调用 onOptionsItemSelected()
,但我可以只在 onClick
中定义操作> 方法。
首先,在 Activity
中声明 filterMenuItem。
MenuItem filterMenuItem;
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.loop_thread, menu);
filterMenuItem = menu.findItem(R.id.action_filter);
filterMenuItem.getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.onOptionsItemSelected(filterMenuItem);
}
});
关于android - 使用自定义操作 View 时未调用 onOptionsItemSelected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170423/
对于 onOptionsItemSelected 方法,只有在单击项目时才会调用此方法,对吗?如果在该 Activity 中单击了一个项目,但由于某些奇怪的原因,程序员没有 if 语句来检查该项目的
我有一个可以包含多个 fragment 的 Activity 。每个 fragment 都可以在 ActionBar 中有自己的菜单项。到目前为止这工作正常,每个项目都是可点击的并执行所需的操作。 我
我对这段代码感到困惑,我有 6 个菜单项,每个菜单项我希望它在 Web View 上加载不同的网页,但我看不到我在哪里可以说当选择第 3 项时执行此操作,有人可以帮忙吗? @Override
我的 fragment 上有这个调用 @Override public boolean onOptionsItemSelected(MenuItem item) { Toast
使用 Android Studio,我正在为我的应用程序创建设置(这是我第一次这样做)。我遇到了 onOptionsItemSelected 问题,我不知道如何继续。这是我的 LogCat: FATA
我有一个实现 onCreateOptionsMenu 方法的顶级 TabHost。我希望子 Activity (选项卡内的子 Activity )能够通过 onOptionsItemSelected
如何避免双击我的示例,任何解决方案? @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getI
我对 public boolean onOptionsItemSelected(MenuItem item) 有问题。 我的代码: public boolean onOptionsItemSelect
我的操作栏上有两个按钮,一个注销按钮和一个创建新消息按钮。但是,如果我单击创建新消息按钮(什么都不应该发生),它会让我退出。我的代码设置为它应该做的。有什么建议吗? @Override pub
我是 Android 开发的新手。 在我的 MainActivity.java 文件中,我声明了一个 onOptionsItemSelected(MenuItem menu) 方法,允许用户在当前 M
我遇到过这样一种情况,我需要为一个项目的子菜单实现 onOptionsItemSelected 监听器。菜单 xml 文件如下所示:
我不确定这是否重复,我尝试过的可能的补救措施无效。 (下面会提到) 我目前正在为我正在做的项目使用 Theme.AppCompat.NoActionBar 并且正在使用 android.support
我在 Android 中的一项 Activity 中有一个抽屉导航。我还在同一 Activity 的操作栏中添加了几个操作按钮和一个操作溢出。现在,问题在于处理抽屉导航项目、操作按钮和操作溢出菜单的选
我已经为我的数据库类创建了一个选项菜单。启动选项菜单后,我想通过单击指定按钮进行所需的 Activity 。 但问题是,如果我单击任何选项,我将被定向到 MainMenu.class。任何想法为什么会
我是 Android 的新手,如果我的问题看起来很简单,我很抱歉。我昨晚整晚都在查找它,但找不到解决方案(这让我觉得我可能在我试图实现的目标上存在根本缺陷)。 基本上,我试图从 onOptionsIt
我正在使用我的 fragment 处理返回功能。我使用操作栏作为返回按钮,但函数 onOptionsItemSelected 不起作用(甚至可能未调用该函数) 此代码在我的 FragmentActiv
我的操作栏中有一个菜单项列表。每个项目点击应该触发不同的方法。但是永远不会调用 onOptionsItemSelected。 这是在 MainActivity 中定义 actionbar 的方式: p
我有一个带有两个按钮的 onOptionsItemSelected 方法,我可以通过单击其中一个按钮来更改子项的值。 一个按钮是“完成”,另一个是“进行中”。 我单击完成按钮,它正确地更改了子值,然后
我使用 Sherlock 的操作栏。我正在尝试将其实现到我的应用程序中。但似乎我错过了一些让它发挥作用的东西。请检查我的代码。当我点击操作按钮时,我的应用程序没有做任何事情。下面是我的代码和我的 xm
我目前正在开发一款 Android 应用。我想使用操作栏中的应用程序图标导航到“主页” Activity 。我继续阅读 this所有需要做的就是添加一个 onOptionsItemSelected 并
我是一名优秀的程序员,十分优秀!