gpt4 book ai didi

android - API 15 中的 menuItem.getActionView() == null

转载 作者:行者123 更新时间:2023-11-30 02:37:50 26 4
gpt4 key购买 nike

我在我的应用程序中支持低至 API 15,当我尝试从我的菜单中获取 searchView 时,这些用户遇到了崩溃。

下面是我的代码:

@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);

MenuItem menuItem = menu.getItem(0);
searchView = (SearchView)menuItem.getActionView();
searchView.setIconifiedByDefault(false);
searchView.setQuery("", true);
menuItem.expandActionView();
}

我在这一行得到了一个NullPointerException:

searchView.setIconifiedByDefault(false);

因为 searchView 为空。这在 API 16 及更高版本的设备上工作得很好。以前有人遇到过这个问题吗?

最佳答案

虽然扩充布局通常会在出现问题时立即导致崩溃,但扩充菜单资源不会。如果有问题,就会记录堆栈跟踪,否则会处理异常,然后继续执行。只是过了一段时间,我们才意识到有些事情是行不通的,后来事情发生了变化。

自定义操作栏项(actionLayoutactionViewClassactionProvider)尤其容易出现这种情况。如果在加载其中任何一个时出现问题——例如 actionViewClass 没有实现正确的构造函数——我们只有在尝试检索自定义项并获取 null< 时才会发现它 回来。解决方案是翻找 LogCat 并查找与已处理异常相关联的堆栈跟踪,以查看真正出了什么问题。

在依赖于 API 级别的情况下,如本例,最有可能的情况是自定义操作项的初始化引用了旧版本 Android 上不存在的方法,因此失败。

关于android - API 15 中的 menuItem.getActionView() == null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26219658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com