5

プロジェクトに検索機能があります。searchable.xmlで、ユーザーが3文字以上入力した場合にのみ検索を制限したいと思います。

これはandroid:searchSuggestThreshold = "3"で実行できますが、私の場合は何も起こらず、ユーザーは複数の文字を入力しても検索を実行できます。

これが私のsearchable.xmlです:

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/Label"
    android:hint="@string/Hint"
    android:searchSuggestThreshold="3"
    android:includeInGlobalSearch="true"/>

これがマニフェストからの2つの検索アクティビティです

 <activity android:name=".Search"
        android:configChanges="orientation|keyboardHidden">
          <intent-filter>   
        <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>   
        </activity>

         <activity android:name=".SearchInterface"
        android:configChanges="orientation|keyboardHidden">
         <meta-data android:name="android.app.default_searchable"
               android:value=".Search" />
         </activity>
4

1 に答える 1

5

質問に答える前に、AndroidManifestで変更しなければならないことが1つあります。

 <meta-data android:name="android.app.default_searchable"
               android:value=".Search" />

タグの間にある必要がありますが、タグの<application></application>内側にある必要はありません<activity></activity>。これは、検索インテントが実行されたときに呼び出すデフォルトのアクティビティを宣言しているためです。その後、android:searchSuggestThresholdが機能するかどうか試してください。回避策として実行できるのは、使用しているSearchHelper(SQLクエリを管理するクラス)で、ユーザーからの検索入力をパラメーターとして受け取るため、単純なifを入力できます。このような:

public static Cursor getAutoCompleteCursor(String s) {
    Cursor cursor;
    if (s != null && s.length() > 2)
        cursor = searchAutoComplete(s);
    else
        cursor = null;
    return cursor;
}

私の言いたいことをご理解いただければ幸いです。疑問がある場合はお知らせください。

于 2012-06-07T08:54:51.037 に答える