2012-06-04 11 views
5

Projemde bir arama işlevim var. Searchable.xml dosyasında, yalnızca kullanıcı en az 3 karakter yazdığında aramayı sınırlamak isterim.Android: saerchable.xml ve searchSuggestThreshold parametresi

Bu, android: searchSuggestThreshold = "3" ile yapılabilir, ancak benim durumumda, hiçbir şey olmuyor, kullanıcı daha fazla karakter yazdığında hala arama yapabilir. İşte

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

Manifest

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

cevap

5

2 arama activityes Önce sorunuzu Eğer AndroidManifest değiştirmek zorunda bir şey var cevap vermek:

İşte benim searchable.xml olduğunu.

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

<application></application> etiketleri ancak içeride <activity></activity> olanlar arasında olmalıdır. Bir Arama amacı tetiklendiğinde çağrılacak varsayılan etkinliği bildirdiği için. Bundan sonra android: searchSuggestThreshold öğesinin işe yarayıp yaramadığını deneyin. Bir geçici çözüm olarak kullanabileceğiniz SearchHelper'da (sql sorgularını yöneten sınıf) kullanıcıdan gelen arama girdisini parametre olarak alırsınız, böylece basit bir şekilde yazabilirsiniz. Bunun gibi:

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

Umarım ne demek istediğimi anlarsınız. Herhangi bir şüphe sadece bilmeme izin ver!

+0

Merhaba @rallat, cevabınız için teşekkür ederiz. İlk çözümü denedim ve hiçbir şey değişmedi. Bu makaleye bir göz atın: http://developer.android.com/guide/topics/search/search-dialog.html meta veriler, etkinlik etiketinde ve uygulama etiketinde değil. İkinci çözüm için –

+0

, bunun gerçekten mümkün olmadığına inanıyorum çünkü kullanıcı arama butonunu yazdığında, arama aktivitesi kapanır ve tüm kontuarları yaptığım ve sonuçları gösterdiğim yeni bir tane açılır. Bu yüzden, kullanıcı arama düğmesini tıkladığında kullanıcı uzunluğunu kontrol etmeliyim. –

+0

uygulama etiketleri arasındaki meta verileri yazmak, aranabilir aktivitenin tüm uygulamadan arama yapmasını sağlayabilir. http://developer.android.com/resources/samples/SearchableDictionary/index.html – rallat