java – 搜索小工具,NullPointer?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 搜索小工具,NullPointer?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3507字,纯文字阅读大概需要6分钟。
内容图文
![java – 搜索小工具,NullPointer?](/upload/InfoBanner/zyjiaocheng/724/f4d90c9025d445cc91214affd4c65859.jpg)
我在我的应用程序中实现搜索小部件时遇到问题.它似乎无法找到菜单项的“动作视图”,但它正好找到该项目.
我环顾四周寻找答案,并没有看到明确的解决方案.
这是我在XML中声明的菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/group_search_box"
android:title="@string/search_label"
android:icon="@drawable/ic_action_action_search"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView" />
以下是它的实现方式.
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
MenuItem searchMenuItem = menu.findItem(R.id.group_search_box);
SearchView searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
这是我正在添加的库,也许我添加了一个不正确的库?
compile 'com.android.support:support-v4:+'
compile 'com.android.support:appcompat-v7:+'
最后这里是崩溃日志
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference
at com.example.myapp.fragments.GroupFragment.onCreateOptionsMenu(GroupFragment.java:88)
at android.app.Fragment.performCreateOptionsMenu(Fragment.java:1780)
at android.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:1927)
at android.app.Activity.onCreatePanelMenu(Activity.java:2539)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:436)
at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:800)
at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:221)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:543)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
我已经跟着文档到了T,仍然无法弄清楚问题.
解决方法:
我今天遇到了同样的问题,摆脱了如下的困惑,
我也使用以下依赖项,
compile 'com.android.support:support-v4:+'
compile 'com.android.support:appcompat-v7:+'
这意味着我从AppCompatActivity而不是Activity类扩展活动类.
所以在这段代码中,
SearchView searchView =
(SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
这个,SearchView应该是,android.support.v7.widget.SearchView不是android.widget.SearchView.这就是你得到的原因,
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference
并且,
<item
android:id="@+id/action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
android:icon="@android:drawable/ic_search_category_default"
android:title="Search"
app:showAsAction="always|collapseActionView" />
请注意,
它是,app:actionViewClass NOT android:actionViewClass
内容总结
以上是互联网集市为您收集整理的java – 搜索小工具,NullPointer?全部内容,希望文章能够帮你解决java – 搜索小工具,NullPointer?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。