我的主要活动的操作栏中有一个搜索小部件。我希望在用户输入至少2个字符后显示建议。
我知道这可以通过设置 android:searchSuggestThreshold =" 2" 来完成,但它似乎无法正常工作,因为当用户键入零个或多个字符时,将调用SuggestionContentProvider。
即使用户点击搜索图标(0个字符)来展开小部件,也会调用ContentProvider。
这是我的searchable.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint"
android:searchSettingsDescription="@string/search_settings"
android:searchSuggestAuthority="com.studiofrenetic.rmfb.Services.SearchContentProvider"
android:searchSuggestIntentAction="android.intent.action.VIEW"
android:searchSuggestThreshold="2">
</searchable>
我的Manifest.xml中只有一个可搜索的活动:
<activity
android:name="com.studiofrenetic.rmfb.MainActivity"
android:screenOrientation="portrait"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
在onCreateOptionsMenu中设置SearchableInfo的代码:
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
mSearchView.setOnQueryTextListener(this);
// Assumes current activity is the searchable activity
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setIconifiedByDefault(true);
我使用ActionBarCompat(使用minSdkVersion 14和targetSdkVersion 19)。
我在网上搜索,似乎没有人有这种奇怪的行为......请帮助我理解这个问题。
提前致谢:)
答案 0 :(得分:0)
最后,我对与 searchSuggestThreshold 相关的行为产生了误解:
在每个类型字符上调用SuggestionContentProvider是正常的,但uri参数在达到阈值之前不包含查询。
因此,应该跳过与建议生成相关的代码。