Je suis en train de mettre en œuvre une boîte de dialogue de recherche dans une application Android Mono par la documentation ici: http://developer.android.com/guide/topics/search/search-dialog.htmlRecherche Dialog dans Mono Android
J'ai une activité que l'utilisateur doit être en mesure de rechercher à partir de:
[Activity (Label = "MyActivity", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/MyStyle")]
[MetaData ("android.app.default_searchable", Value = ".SearchActivity")]
public class MainActivity : BaseActivity {...
J'ai une activité interrogeable (où le levage lourd se produira):
[Activity(Theme = "@style/MyStyle", Label = "Searchable", LaunchMode = Android.Content.PM.LaunchMode.SingleTop)]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] { Intent.CategoryLauncher, Intent.ActionSearch })]
[MetaData("searchable", Resource = "@xml/searchable")]
public class SearchActivity : BaseActivity { ...
Et j'ai mon searchable.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable
xmlns:android="http://schemas.android.com/apk/res/android"
android:label="MyLabel"
android:hint="Search Products">
</searchable>
Lorsque j'appuie sur la touche de recherche du téléphone dans le MainActivity, rien ne se passe - pas de dialogue. Je pense que mon problème réside dans la façon dont les attributs sont traduits dans AndroidManifest.xml lors de l'exécution mais je ne suis pas sûr.
MISE À JOUR 1/3/2012: J'ai posté un projet distillé jusqu'aux éléments les plus fondamentaux ici. Appuyez sur le bouton de recherche sur votre Android et vous devriez voir le SearchDialog mais il n'apparaît pas: Demo Project Here
Désolé j'ai attendu si longtemps pour accepter la réponse. Cette solution a fonctionné mais il manquait quelques informations. Tout d'abord, les Google Docs impliquent que le préfixe de votre nom d'activité avec un "." le qualifiera complètement, ce qui est apparemment faux. Deuxièmement, l'espace de noms doit être en minuscules. J'avais déjà essayé de qualifier complètement le nom de la classe, mais cela n'a pas fonctionné parce que mon espace de noms avait des caractères en majuscules. Je ne comprends pas pourquoi ce serait le cas. – dubj
Java nécessite que les espaces de noms soient en minuscules, donc Mono pour Android traduit cela pour vous dans les coulisses. Dans ce cas, vous devez utiliser le nom de classe Java complet. Vous pouvez personnaliser l'espace de noms qui sera utilisé dans les propriétés du projet, et vous pouvez toujours vérifier le fichier AndroidManifest.xml généré lors du conditionnement dans le dossier obj/Debug/android pour voir ce qui est généré. –
Je ne le savais pas sur les espaces de noms Java ou sur la façon de trouver le fichier manifeste généré. Celui que j'ai essayé de regarder (emballé dans l'apk) était en format binaire. C'était très utile, merci! – dubj