我有一个不起作用的SearchView。SearchView出现在菜单栏中,我可以输入文本。然而,当我点击手机屏幕键盘上的搜索图标时,什么都没有发生。理想情况下,这将启动一个新的活动,并发送一个查询字符串供使用。我尝试实现SearchView.setOnSearchClickListener方法来处理点击事件,但是这样做会导致结果活动在我点击搜索图标以输入文本时立即加载,且没有参数传递。非常感谢任何帮助指出我可能做错了什么。
我在我的Activity中像这样创建菜单:
我还将其添加到了搜索显示的活动清单中:
可搜索的 searchable.xml 文件只包含以下内容:
编辑 - 问题与可能的重复不同。应该接收意图的活动根本没有启动。
我在我的Activity中像这样创建菜单:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
final SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.convert:
...
return true;
default:
return super.onOptionsItemSelected(item);
}
}
搜索功能的XML代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:title="@string/search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
android:actionViewClass="android.support.v7.widget.SearchView"
app:actionViewClass="android.support.v7.widget.SearchView"/>
<item android:id="@+id/convert"
android:title="@string/dlconvert" />
</menu>
我还将其添加到了搜索显示的活动清单中:
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"/>
以下是搜索结果活动的定义:
<activity android:name=".ActivitySearchResults">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"/>
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
</intent-filter>
</activity>
可搜索的 searchable.xml 文件只包含以下内容:
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="Search..." />
编辑 - 问题与可能的重复不同。应该接收意图的活动根本没有启动。