2012-06-04 4 views
5

내 프로젝트에 검색 기능이 있습니다. searchable.xml에서 사용자가 적어도 3자를 입력 할 때만 검색을 제한하고 싶습니다.Android : saerchable.xml 및 searchSuggestThreshold 매개 변수

이 작업은 android : searchSuggestThreshold = "3"으로 수행 할 수 있지만 제 경우에는 아무 일도 일어나지 않습니다. 사용자가 입력 할 때 또는 더 많은 문자를 입력 할 때 검색을 계속할 수 있습니다. 여기

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

이 매니페스트

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

답변

5

에서 2 검색 activityes는 전에 귀하의 질문에 당신이 AndroidManifest를에서 변경해야 할 한 가지가 대답입니다 :

여기 내 searchable.xml입니다.

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

나는 당신이 무엇을 의미하는지 이해하기를 바랍니다. 의심의 여지가 그냥 알려주세요!

+0

안녕하세요 @rallat, 답장을 보내 주셔서 감사합니다. 나는 첫 번째 해결책을 시도했지만 아무것도 바뀌지 않았습니다. 이 기사를 살펴보면 http://developer.android.com/guide/topics/search/search-dialog.html 메타 데이터는 애플리케이션 태그가 아니라 액티비티 태그에 있습니다. –

+0

두 번째 솔루션에 대해 사용자가 검색 단추를 입력하면 검색 활동이 닫히고 모든 querryes를 수행하고 결과를 표시하는 새 창이 열리기 때문에 실제로는 가능하지 않다고 생각합니다. 따라서 사용자가 검색 버튼을 클릭 할 때 입력 시간을 확인해야합니다. –

+0

애플리케이션 태그 사이에 메타 데이터를 쓰면 검색 가능한 활동이 전체 앱에서 검색을 호출 할 수 있습니다. http://developer.android.com/resources/samples/SearchableDictionary/index.html – rallat