L'activité de recherche n'est pas lancée lorsque vous appuyez sur Entrée. La vue de recherche est bien affichée sur la barre d'action. Mais lorsque je tape la requête de recherche et appuyez sur Entrée
androidmanifest.xml p> voici le menu.xml p> l'activité SearchResult qui devrait être l'activité appelée lorsque vous appuyez sur le bouton d'envoi de recherche p> public class SearchResultsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("search", "search triggered");
setContentView(R.layout.searchpage);
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
Log.d("search", "search triggered");
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent)
{
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
Log.d("search", query);
}
}
@Override
public boolean onSearchRequested() {
Log.d("search", "search triggered");
return false; // don't go ahead and show the search box
}
6 Réponses :
a résolu le problème. La balise Était nécessaire pour être pour une application .Remouver l'activité de l'activité et la mettre sous application a fait l'affaire.
Voici la dernière étiquette d'application dans Manifest.xml P>
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="android.app.default_searchable" android:value=".SearchResultsActivity"/> <activity android:name="com.punit.rateit.MainActivity" android:label="@string/app_name" > <meta-data android:name="android.app.default_searchable" android:value="com.punit.rateit.SearchResultsActivity" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
Cela ne semble pas fonctionner. Il existe deux balises de méta-données conflictuelles avec les mêmes valeurs de nom.
Vérifiez celui-ci: U DOIT Delacre Meta Tag à la fois en activité principale (où vous placez le widget de recherche et dans l'activité de recherche)
La documentation raconte une histoire différente. Pour déclarer l'activité interrogeable à la boîte de dialogue de recherche d'une activité, ajoutez un élément
Je suis juste déconcerté à quel point cette nouvelle recherche est difficile. Je suis sur ma 3ème journée en essayant de comprendre cela.
J'ai eu le même problème et ma recherche d'une réponse m'a pris ici, voici ce qui a fonctionné pour moi ... P>
Assurez-vous que votre fichier
secheckables.xml code> est dans le bon endroit (i.e, dans votre dossier
res / xml / code>) et que le même fichier ne contient aucun erreurs - sinon vous constaterez que
(SearchManager) GetSystemservice (context.search_service) .GeRearchableInfo (composantName) code> retournera null, brisant votre fonctionnalité de recherche. P>
(également, assurez-vous de définir
composantName code> de la manière appropriée, Parce que l'exemple indiqué dans le guide Android est pour seulement quand vous effectuent des recherches et affichant des recherches dans la même activité.) p> blockQuote>
... Partage dans l'espoir qu'il peut sauver quelqu'un d'autre un gaspillé 4 heures! : / p>
J'ai perdu trois jours, aujourd'hui est le quatrième jour. Pouvez-vous examiner ma question ici < / a>? Peut-être que vous pouvez repérer le problème?
Beaucoup de temps gaspillé, enfin, cela aide, même si je suis toujours pour comprendre pourquoi est-ce null.
Je n'utilisais pas les chaînes dans la recherche.
Vous devez le configurer de cette façon ou vous obtiendrez NULL. Je venais de mettre en texte au lieu d'utiliser @string. P>
Après une longue recherche, j'ai analysé quelque chose ici, l'activité.Class est le nom de l'activité interrogeable où vous souhaitez transmettre la requête de recherche. P> p >
Travaillé pour moi. La documentation n'est pas très claire à ce sujet. développeur.android.com/guide/topics/search/search-DialogleO/a > Sous le Configuration du widget de recherche code> Le commentaire dit "assume l'activité en cours est l'activité interrogeable" de sorte qu'il dise essentiellement que la rechercheArective n'est pas l'activité actuelle, elle devrait être
Nouveau composantName (Code> , SearchAserAactivit.Class) code> au lieu de
getComponentName () code>. Très facile à manquer
Création d'un objet de composantName avec le nom de la classe d'activité de résultat de la recherche a fonctionné pour moi. Comme ceci:
J'ai lutté avec le problème pendant une journée ou deux, ce n'est pas très clairement mentionné dans la documentation.
searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultActivity.class)));
Ceci est un bon tutoriel pour mettre en œuvre une interrogeable à Android. Javapapers.com/android/android-Seechercherview-action-bar-Tutoria l espérons que ça vous aide!