2010-05-12 3 views
2

J'essaie d'implémenter une recherche locale dans mon activité. J'ai ajouté un filtre d'intention approprié et une balise de métadonnées au fichier manifeste, mais si je clique sur le bouton de recherche, il invoque la boîte de recherche android standard. Quel est mon problème?Recherche locale Android

fichier Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.nixsolutions.invertigation.android.dataprovider" 
android:versionCode="1" 
android:versionName="1.0"> 
<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:debuggable="true"> 


    <provider 
     android:name="NoteProvider" 
      android:authorities="com.nixsolutions.investigation.android.NoteProvider"> 
    </provider> 
    <activity 
     android:name="NotesList"> 
     <intent-filter> 
      <action 
       android:name="android.intent.action.MAIN" /> 
      <category 
       android:name="android.intent.category.LAUNCHER" /> 

     </intent-filter> 
     <intent-filter> 
      <action 
       android:name="android.intent.action.SEARCH" /> 
      <category 
       android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.app.searchable" 
      android:resource="@xml/searchable" /> 
    </activity> 
</application> 
<uses-sdk 
    android:minSdkVersion="7" /> 

</manifest> 

searchable.xml:

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
android:label="Custom search" 
android:hint="Custom hint" 
android:searchMode="showSearchLabelAsBadge" 
/> 

Répondre

1

Je pense que vous aussi avez besoin d'un essoufflement de l'activité (au niveau de l'application) que celui qui offre la recherche, via:

(En remplaçant par la valeur correcte pour android:value)
<meta-data android:name="android.app.default_searchable" android:value=".LoremSearch" /> 

.: par exemple

<application android:icon="@drawable/icon" android:label="@string/app_name" 
      android:debuggable="true" android:allowBackup="true" 
    > 
    <meta-data android:name="android.app.default_searchable" 
       android:value=".MySearchActivity" /> 

    <activity android:name=".MySearchActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 
     <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable"/> 
    </activity> 

La façon dont vous avez spécifié pour une seule activité, ne permet la recherche dans cette activité. L'ajout de la balise meta-data au niveau de l'application permet uniquement de rechercher toutes les activités.

See here pour un projet de recherche complet.

+0

Ajouté . Ça ne marche toujours pas. Mais merci. –

Questions connexes