MenuItemCompat.getActionView 始终返回 null

2023-11-21

我刚刚实施了v7 AppCompat支持库但是MenuItemCompat.getActionView在我测试的每个 Android 版本中总是返回 null(4.2.2、2.3.4 ....)

The SearchView显示在操作栏中,但它不响应触摸操作,也不会展开以显示其EditText就像一个简单的图标。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    if (searchView != null) {
        SearchViewCompat.setOnQueryTextListener(searchView, mOnQueryTextListener);
        searchView.setIconifiedByDefault(false);
        Log.d(TAG,"SearchView not null");
    } else
        Log.d(TAG, "SearchView is null");
    }
    return super.onCreateOptionsMenu(menu);
}

Menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:id="@+id/action_search"
          app:showAsAction="always|collapseActionView"
          android:icon="@drawable/abc_ic_search"
          android:title="@string/action_bar_search"
          android:actionViewClass="android.support.v7.widget.SearchView"/>

    <item android:id="@+id/action_refresh"
          android:icon="@drawable/refresh"
          android:title="@string/action_bar_refresh"
          app:showAsAction="ifRoom"/>
</menu>

最后我找到了解决方案。

  1. 更改命名空间actionViewClass from android:actionViewClass to app:actionViewClass

  2. 实施android.support.v7.widget.SearchView.OnQueryTextListener当前活动的界面。

  3. 直接使用setOnQueryTextListener代替SearchViewCompat.setOnQueryTextListener

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.menu.menu, menu);
    
      MenuItem searchItem = menu.findItem(R.id.action_search);
      SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
      if (searchView != null) {
         searchView.setOnQueryTextListener(this);
      }
    
      return super.onCreateOptionsMenu(menu);
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MenuItemCompat.getActionView 始终返回 null 的相关文章

  • 如何快速自动发送FCM或APNS消息?

    我正在开发一项后端服务 通过 FCM 或 APNS 向移动应用程序发送推送通知 我想创建一个可以在一分钟内运行的自动化测试 并验证服务器是否可以成功发送通知 请注意 我不一定需要检查通知是否已送达 只需检查 FCM 或 APNS 是否已成功
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 将骨干模型绑定到 Marionette ItemView - 阻塞 .fetch()?

    这是一个由 2 部分组成的问题 1 是否有更好的方法将模型异步渲染到视图 我目前正在使用 ajax 请求fetch模型中的方法 尽管我在初始化时显式调用它 then使用应用程序事件呈现模板化视图 vent 在之后从模型内部发布parse方法
  • 如何制作带有图像填充的JLabel BorderLayout.CENTER

    我有一个 JFrame 并将 LayoutManager 设置为 BorderLayout 然后继续添加带有图像的 JLabel 但是 当我调整框架大小时 JLabel 不会调整大小 我没有向North S E等添加任何组件 我希望简单地让
  • 如何在 Gridview 中的 RowDataBound 事件中更改 Eval() 字段的值

    我有一个网格视图
  • 处理与 Django 中的应用程序无关的静态文件

    在文档中https docs djangoproject com en dev howto static files 我读到静态文件应该与各自的应用程序放在一起并调用 load staticfiles img src css base cs
  • requestLegacyExternalStorage 在 Android 11 - API 30 中不起作用

    Google 最近在 API 29 中引入了一些与存储 API 相关的更改 例如范围存储 我们通过在 Manifest 中添加 requestLegacyExternalStorage true 来选择退出 但现在当我的 targetSdk
  • 如何提高 JAXB 性能?

    这是我的转换代码 当我们处理大数据时 这需要很长时间 调用该方法几乎一百万次 我们可以清楚地看到它持有线程一段时间 请建议我一些提高性能的方法 public class GenericObjectXMLConverter
  • Scala 类型推理混乱:有还是没有?

    原始版本 trait Animal F A case class Cat F I A limits F I f I gt A extends Animal F A object ConfuseMe def confuse F A tt An
  • 使用转换器直接绑定到 DataContext 时的 WPF 更新绑定

    通常 当您希望数据绑定控件 更新 时 您可以使用 PropertyChanged 事件向界面发出信号 表明数据已在后台发生更改 例如 您可以有一个文本块 该文本块通过属性 DisplayText 绑定到数据上下文
  • 操作/编辑现有 xml 文档的最佳 java Xml 解析器

    任务 我有一个现有的 xml 文档 UTF 8 它使用 xml 命名空间和 xml 模式 我需要解析特定元素 将内容 还需要使用 xml 命名空间前缀 附加到该元素 然后再次写出文档 我应该使用哪个最佳的 XML 解析器库来完成此任务 我看
  • JSONObject 中的 JSONObject

    我有一个这样的 API 输出 user status stat1 54 stats2 87 我创建一个简单的JSONObject从这个 API 中 JSONObject json getJSONfromURL URL 之后我可以像这样读取用
  • 使用 Swift 执行“killall”时不允许进行操作

    我正在尝试创建一个菜单栏应用程序来隐藏桌面图标 并希望其他各种东西主要是为了了解有关 Swift 的更多信息 但由于某种原因我无法让它工作 当我运行该程序并单击其中一个菜单项时 没有任何反应 并且我在控制台中收到此警告 killall wa
  • 如何在 Vim 中每次按键时将当前缓冲区的内容写回文件?

    我希望 Vim 尽可能频繁地自动写入我的文件 理想的情况是每次击键 我需要定期保存 以便我的后台构建过程能够看到它 它是 LaTeX 文档的 makefile 我希望预览器在我完成输入后向我显示一个几乎最新的文档 最终解决方案 下面的答案有
  • genymotion player.exe 停止工作

    当我尝试启动 genymotion Android 模拟器时 它给我一个错误 player exe 已停止工作我尝试寻找答案并发现this但是 我之前遇到了 open gl 2 0 问题 为此我更新了显卡驱动程序 我的主板是华硕 P5G41
  • 更新 matplotlib 动画中的 x 轴标签

    这是一段说明我的问题的玩具代码 import numpy as np import matplotlib pyplot as plt from matplotlib animation import FuncAnimation fig ax
  • 在字符串中每 3 个字符后插入句点

    我有这个 from future import print function def f comma p string v string p string if type v string type int or type v string
  • 为什么要写 `window[ "eval" ].call( window, data );`

    jQuery 1 7rc1 第 614 行 window eval call window data 为什么不简单地写 eval call window data 答案在这里 解码 jQuery Jim Driscoll 发现对于更尊重标准
  • Git 如何处理符号链接?

    如果我有一个文件或目录是符号链接 并且我将其提交到 Git 存储库 那么它会发生什么情况 我假设它会将其保留为符号链接 直到文件被删除 然后如果您从旧版本中拉回文件 它只会创建一个普通文件 当我删除它引用的文件时它会做什么 它只是提交悬空链
  • JPanel 使用 Graphics 自定义绘图

    我有一个自定义 JPanel 有时在我的程序中 我需要调用一个将屏幕绘制为黑色的方法 就是这样 public void clearScreen Graphics g getGraphics g setColor Color black g
  • C# - 无法在 WinForms 的列表框中执行键值对

    我正在使用 WinForms 中的 ListBox 编写 C 应用程序 我从 XML 文件获取数据 ID 和全名 我想在列表框中显示全名 当我选择其中之一时 我想获取相关的 ID 我尝试使用SelectedValue财产没有运气 我也尝试过
  • MenuItemCompat.getActionView 始终返回 null

    我刚刚实施了v7 AppCompat支持库但是MenuItemCompat getActionView在我测试的每个 Android 版本中总是返回 null 4 2 2 2 3 4 The SearchView显示在操作栏中 但它不响应触