【发布时间】:2015-03-24 01:10:46
【问题描述】:
经过数小时尝试在我的支持工具栏中获得支持 SearchView 以正常工作(它显示,显示提示文本但拒绝接受文本),我不得不求助于你。
我已经在 Google 上搜索了几个小时,在这里和其他网站上阅读了很多答案,查看了很多文档和一篇关于该主题的特定博客文章,但我就是无法找出问题所在。
正如我所说,我正在使用 SearchView 和 Toolbar 以及 MenuItemCompat 的支持版本。另外,ActionBarActivity。我确保我认真地遵循了所有步骤(this blog post 在这个主题上有很多话要说,甚至官方文档中的错误)。
我已经正确设置了 AndroidManifest.xml 文件,我有一个 searchable.xml,据我了解,它被正确引用(我的意思是,提示文本通常显示在 SearchView 字段中),我有一个搜索结果活动在清单中设置了 android.intent.action.SEARCH 意图过滤器。
还是什么都没有。老实说,我被难住了。
这是 SearchView 托管活动的 onCreateOptionsMenu():
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
MenuItem search = menu.findItem(R.id.search);
searchView = (SearchView) MenuItemCompat.getActionView(search);
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
return true;
}
这里是 res/xml 中的 searchable.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/search_hint"
android:label="@string/search_title" >
</searchable>
最后,这里是 res/menu 中的 menu.xml 文件:
<item
android:id="@+id/search"
android:icon="@drawable/ic_search_white_18dp"
android:title="@string/search_title"
myappname:actionViewClass="android.support.v7.widget.SearchView"
myappname:showAsAction="ifRoom|collapseActionView"/>
(显然 myappname 在这里替换了我的真实应用名称)。
奇怪的是,添加后语音搜索完全正常
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
在可搜索的.xml 中。它甚至将意图中识别的短语发送到搜索结果活动。唯一的问题是我根本无法在文本字段中输入文本——那里甚至没有光标闪烁。尝试执行类似 searchView.requestFocus() 的操作没有结果。
【问题讨论】:
标签: java android searchview android-toolbar