Android searchSuggestThreshold属性不起作用:对每个键入的字符触发ContentProvider

Android searchSuggestThreshold属性不起作用:对每个键入的字符触发ContentProvider,android,android-searchmanager,android-search,search-suggestion,Android,Android Searchmanager,Android Search,Search Suggestion,我的主要活动的操作栏中有一个搜索小部件。我想在用户键入至少2个字符后显示建议 我知道这可以通过设置android:searchSuggestThreshold=2来实现,但它似乎不起作用,因为当用户键入零个或多个字符时,会调用SuggestContentProvider 即使用户单击搜索图标0个字符以展开小部件,也会调用ContentProvider 以下是我的searchable.xml: <?xml version="1.0" encoding="utf-8"?> <sea

我的主要活动的操作栏中有一个搜索小部件。我想在用户键入至少2个字符后显示建议

我知道这可以通过设置android:searchSuggestThreshold=2来实现,但它似乎不起作用,因为当用户键入零个或多个字符时,会调用SuggestContentProvider

即使用户单击搜索图标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>
我将ActionBarCompat与MinSDK版本14和TargetSDK版本19一起使用

我在网上搜索,似乎没有人有这种奇怪的行为。。。请帮我理解这个问题


提前感谢:

最后,我对与searchSuggestThreshold相关的行为产生了误解:

对每个类型化字符调用SuggestionContentProvider是正常的,但是uri参数在达到阈值之前不包含查询

因此,应该跳过与建议生成相关的代码

<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>
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);