操作栏 sherlock 库中显示空指针异常

2024-03-26

我想实现 Sherlock 操作栏的搜索视图小部件。我的问题是OnOptionItemSelected搜索视图项目的。我在库活动中遇到空指针异常。

菜单 XML:

<item android:id="@+id/menu_search"
      android:actionViewClass="com.actionbarsherlock.widget.SearchView"
      android:icon="@android:drawable/ic_menu_search"
/>

选项菜单的代码片段:

public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.tvguide_menu, menu);
    MenuItem mSearch = menu.findItem(R.id.menu_search);
    searchView = new SearchView(getSupportActionBar().getThemedContext());
    searchView.setQueryHint("Search for countries…");
    searchView.setOnQueryTextListener(this);
    mSearch.setActionView(searchView);
    mSearch.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM |
            MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
}

我在点击搜索 android 时被迫关闭。我在下面分享了我的日志

04-17 15:10:08.508: E/AndroidRuntime(23283): FATAL EXCEPTION: main
04-17 15:10:08.508: E/AndroidRuntime(23283): java.lang.NullPointerException
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.view.menu.MenuItemImpl.toString(MenuItemImpl.java:490)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at java.lang.StringBuilder.append(StringBuilder.java:202)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:201)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:953)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:491)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:110)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at android.view.View.performClick(View.java:3511)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at android.view.View$PerformClick.run(View.java:14105)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at android.os.Handler.handleCallback(Handler.java:605)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at android.os.Looper.loop(Looper.java:137)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at android.app.ActivityThread.main(ActivityThread.java:4438)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at java.lang.reflect.Method.invokeNative(Native Method)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at java.lang.reflect.Method.invoke(Method.java:511)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-17 15:10:08.508: E/AndroidRuntime(23283):    at dalvik.system.NativeStart.main(Native Method)

问题是你的Menuitem 未指定标题,并且在行中:

@Override
public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) {
    if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " 
           + featureId + ", item: " + item);
    ...
}

item将涉及到toString()方法其中:

@Override
public String toString() {
    return mTitle.toString();
}

会抛出一个NullPointerException。在修复之前,一个简单的解决方法是使用:

android:title=""

为您MenuItem.

此外,在您的应用程序发布时也不会发生这种情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作栏 sherlock 库中显示空指针异常 的相关文章

  • 您的应用中的 Google Analytics SDK

    我按照这里的说明进行操作 https developers google com analytics devguides collection android v3 https developers google com analytics
  • Android Widget ID 是否持久

    在从桌面删除该 Widget 实例之前 您从操作系统收到的用户桌面上特定 Widget 实例的 Widget ID 是否一致 我找不到任何明确说明这一点的文档 但我假设这是因为文档说您可以使用小部件 id 来存储任何实例配置信息 我想将一些
  • ndk-build error.opencv2/core/core.hpp:没有这样的文件或目录

    我在 Android 中使用 OpenCV Nonfree 模块时遇到问题 我读了这个教程https sites google com site wghsite technical notes sift surf opencv androi
  • 升级到 Proguard 4.8 后无法导出应用程序

    我刚刚将我的 Android SDK ADT 和 Proguard 升级到最新最好的版本 我的项目在调试模式下编译并运行良好 但是当我尝试导出它的签名版本 APK 时 我收到来自导出向导的错误Eclipse 控制台上没有任何错误日志消息 如
  • 与通用地图相比,MapView 的分辨率较差

    我刚刚收到 HTC Desire 进行测试 我注意到 残留在小于整个屏幕的框架中的地图视图不如通用地图应用程序那么清晰 有什么办法解决这个问题吗 您应该使用 API 级别 4 或更高级别编译应用程序 然后在 AndroidManifest
  • 如何在 Android 中创建始终位于顶部的全屏覆盖 Activity

    我希望能够创建一个始终位于 Android 显示前面的 Activity 它不应该接收任何输入 只需将其传递到其下面的任何应用程序即可 像平视显示器之类的东西 我能够研究我需要将底层窗口类型设置为 TYPE SYSTEM ALERT 但看起
  • 将项目添加到 android 框架的设置中

    我正在 android 框架中工作 我想向 android 操作系统中的现有设置添加一个项目 您能告诉我如何执行此操作吗 首先阅读有关偏好活动 http developer android com reference android pre
  • 如何连接到Google Play服务并加载排行榜

    我想将我的游戏与 Google Play 服务连接 我已阅读有关 Android 开发人员的文档 并尝试遵循输入数字示例 但仍然无法加载排行榜 我有导入baseGameUtils 但我使用andengine 所以我没有使用来自谷歌的exte
  • 新安装的Eclipse和Android SDK。无法让模拟器工作。挂在时钟屏幕上

    我对开发是全新的 我已经安装了 Eclipse 和 Andoid SDK 但是 我无法让模拟器工作 我已经尝试过示例记事本代码和 Hello Android 教程代码 每次我尝试运行任一应用程序时 它都会挂在时钟屏幕上 屏幕上还显示正在充电
  • Android 在 Windowmanager 中调整视图大小

    这是我的代码 menubuttonClosed li inflate R layout menu button null menubutton ImageButton menubuttonClosed findViewById R id m
  • Android - 使用 SAX 解析器解析大文件

    我正在尝试使用 SAX 解析器解析来自 webservice 的 xml 数据 当我尝试使用 URL 解析数据 大小 7 4MB 时 它工作正常 但是当我从 URL 复制 xml 数据并放置 xml 文件时 size 7 4MB 在raw文
  • MutableStateflow 值、更新、发出

    假设我有一个可变状态流 https kotlin github io kotlinx coroutines kotlinx coroutines core kotlinx coroutines flow mutable state flow
  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 片段活动中的 commitAllowingStateLoss()

    我的应用程序使用片段活动 它仅处于纵向模式 无法旋转屏幕 最初我使用的是commit 方法 但现在我计划不加区别地将这些更改为commitAllowingStateLoss 对于碎片活动 是否有任何理由不不加区别地执行此操作而不重新评估我使
  • 如何防止应用程序被盗(针对Android应用程序)?

    我想知道防止人们窃取我的应用程序的最有效方法是什么 在线下载 apk 的副本而不是购买它 我已经花了一个lot特别是 Droidbox 上的时间 并且不会发布 Sync 直到我可以保证提供专业版本的非法副本的人无法发布 有人实施过这个吗 我
  • Grade Plugin 3-alpha1 输出文件导致错误

    我正在尝试将项目更新到 Android Studio 3 build gradle 文件中不再接受以下代码片段 applicationVariants all variant gt variant outputs each out gt d
  • 活动中列表视图中的粘滞行

    我的列表视图中只有一行应该是粘性的 而不是粘性标题中带有字母的部分或部分 我真的很感激任何关于列表视图在活动中粘性一行而不是片段的帮助 我该怎么做 我真的很感谢任何帮助 提前致谢 使用如下代码 class MyAsyncTask exten
  • Android:选择 EditField 上焦点上的所有文本

    我试图让 Android 在获得焦点时选择 EditText 字段中的所有文本 我在布局中使用此属性 在两个字段上 android selectAllOnFocus true 我不确定这是否相关 但为了将光标移动到第一个可编辑字段 前面 还
  • 致命异常:GoogleApiHandler

    在我的项目中 我使用货币化服务 Vungle AppLovin 当我尝试加载广告时 出现此异常 E AndroidRuntime 致命异常 GoogleApiHandler 进程 kz ikar PID 3673 java lang NoS
  • FCM 主题是否适合更多用户?

    我对使用主题消息有点困惑 我的场景是根据通知触发一些作业 请帮助我更多地了解这一点 如果我们正在处理大量用户 则可以使用 FCM 主题向用户发送通知 我们可以只使用数据消息和主题消息吗 使用主题发送的消息是否保证送达 我在 FCM 文档中看

随机推荐

  • Spring MVC 更新后不会显示正确的数据库值

    在我的控制器中 输入一个值MySQL数据库成ModelAndView object 有一个单独的程序可以更新表和MVC应该获取该值 因此没有表单可以更新该表 当 的时候表已更新 当我在浏览器上点击刷新 值不会在页面上更新 控制器 Suppr
  • 如何在 travis 上启动和停止后台任务?

    我需要在 travis 上启动并重新启动自定义 Web 服务器 使用子 shell 在后台启动就可以了 travis yml if TEST ADAPTER HTTP then vendor bin httpd php start fi 为
  • Phoenix框架中如何处理关联和嵌套表单?

    Phoenix框架中如何处理关联和嵌套表单 如何创建具有嵌套属性的表单 在控制器和模型中如何处理它 有一个处理 1 1 情况的简单示例 想象一下我们有一个Car and an Engine模型和显然Car有一个Engine 所以有汽车型号的
  • 简单的随机英语句子生成器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个简单的随机英语句子生成器 我需要用我自己的单词填充它 但它需要能够制作至少遵循英语规则的较长句
  • 警告:“将‘D’的乘法及其转置括起来,以确保结果是埃尔米特式的。”

    正如您在上面的屏幕截图中看到的 我的 Matlab m 文件代码中有以下表达式 K P D D P 其中 P 是一个 nxn 矩阵 D 是一个 nx1 列向量 n 4 如果重要的话 为什么我会收到此警告消息 如果我在那里使用或不使用括号会发
  • SCTP 与多宿主作为 TCP 的直接替代品

    SCTP具有本机多宿主支持 如果我理解正确的话 如果主接口出现故障 它将自动通过辅助 NIC 重新路由您的数据包 我通过编写一个自定义路由守护程序来使用 TCP 复制此功能 以便在我的主 NIC 出现故障时修改路由表 我想尝试使用SCTP反
  • 如何隐藏 toast 消息“您的音频将发送到谷歌以提供语音识别服务。”在安卓中?

    我正在使用谷歌语音识别器在 Android 中集成语音服务 但是当按下麦克风按钮时 会显示这条烦人的 toast 消息 请建议我一种隐藏此 toast 消息的方法 这是我的java代码 public class FormActivity e
  • 如何合并对象数组中的重复项并对特定属性求和? [复制]

    这个问题在这里已经有答案了 我有这个对象数组 var arr name John contributions 2 name Mary contributions 4 name John contributions 1 name Mary c
  • PyQt 中同一模型的不同视图

    我有一个关于 PyQt 中特定模型的多个视图的问题 目前 我有一个 TreeView 设置来显示继承自 StandardItemModel 的模型 模型中存在三种类型的 StandardItem Alpha Beta Gamma 它们在 T
  • 单元测试通过 Django 中模型的正则表达式验证器

    我为 models py 中的一些字段定义了模型以及正则表达式验证器 在tests py中 我编写了测试来验证这些验证器 但它们却通过了 尽管当我尝试通过视图输入错误的值时验证器会发出警报 并且我的 forms py 中没有该表单的任何 干
  • 如何查询iPhone当前的IP地址?

    如何查询iPhone当前的IP地址 如果你想要externalIP地址 用于从本地网络外部连接的IP地址 您需要查询外部网络上的服务器 快速搜索后得到以下结果 http checkip dyndns org http checkip dyn
  • Edmx 需要 Primary_Key 吗?

    在 net 中创建 Edmx 时 在创建数据库的 Edmx 时 仅添加具有主键的表和视图 这是一个问题 这个问题很容易解决 但只需在表或视图中创建列主键 但我不知道为什么有必要 谁能解释一下其背后的原因吗 实体框架需要一个主键来正确地将一条
  • 在 node-cron 中获取下一个 cron 作业时间

    在node cron中 如何获取下一个cron作业的时间 例如cronJob next CronJob time 或其他属性 文档中没有任何方法可以证明这一点 我不知道有什么方法可以使用节点 cron https www npmjs com
  • Windows Azure 共享访问签名始终给出:Forbidden 403

    我正在尝试获取单个 blob 的共享访问签名 然后使用 REST api 下载该 blob 但是 我总是收到禁止的 403 错误消息 都在存储模拟器和云上 这是我的代码 CloudStorageAccount storageAccount
  • File.Copy 之后文件正被另一个进程使用

    我正在尝试管理我的网络应用程序中的文件 有时 我必须在文件夹中创建一个文件 使用 File Copy File Copy oldPath newPath 几秒钟后该文件可能会被删除 if File Exists newPath File D
  • GUID 或 GUID 的 SHA1 哈希之间发生冲突的可能性是否更大?

    之间发生碰撞的机会是否更大GUID s 128 位 或 SHA1 哈希值GUID s 160 位 我的观点是 机会较小GUID 即使少了 32 位 因为它有一些特殊的机制来确保它 几乎 因为没有保证 唯一 例如 时间戳 注意 我已经知道GU
  • 点击屋。在集群上创建数据库超时结束

    我有一个由 Clickhouse 的两个节点组成的集群 两个实例都位于 docker 容器中 主机之间的所有通信均已成功检查 ping telnet wget 工作正常 在 Zookeeper 中 我可以在下面看到我触发的查询ddl bru
  • Android Studio 3.2.1,XML 错误缩进格式

    更新到 Android Studio 3 2 1 后 XML 文件格式非常烦人和糟糕 我们该如何修复它 我们可以将其从设置中的某处更改为预览类型吗 在 Android Studio 3 上 转到 首选项 gt 编辑器 gt 代码样式 gt
  • Eclipse 中源的相对路径

    所以 Eclipse 和相对路径 我想要实现的是与多个用户共享项目文件 其中每个用户的源的确切位置可能不同 即 项目 MyProject 的 src 可能位于c version control foo MyProject src or c
  • 操作栏 sherlock 库中显示空指针异常

    我想实现 Sherlock 操作栏的搜索视图小部件 我的问题是OnOptionItemSelected搜索视图项目的 我在库活动中遇到空指针异常 菜单 XML