Estoy tratando de implementar un diálogo de búsqueda en una aplicación Android Mono por la documentación aquí: http://developer.android.com/guide/topics/search/search-dialog.htmlde diálogo de búsqueda en Mono Android
tengo una actividad que el usuario debe ser capaz de buscar a partir de:
[Activity (Label = "MyActivity", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/MyStyle")]
[MetaData ("android.app.default_searchable", Value = ".SearchActivity")]
public class MainActivity : BaseActivity {...
tengo una actividad de búsqueda (donde el trabajo pesado va a pasar):
[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 { ...
y tengo mi 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>
Cuando presiono la tecla de búsqueda en el teléfono en MainActivity, no ocurre nada, no hay diálogo. Creo que mi problema radica en cómo se están traduciendo los atributos en el AndroidManifest.xml en tiempo de ejecución, pero no estoy seguro.
ACTUALIZACIÓN 1/3/2012: He publicado un proyecto destilado a los elementos más básicos aquí. Pulse el botón de búsqueda en tu Android y debería ver la SearchDialog pero no aparece: Demo Project Here
Lo siento, esperé tanto para aceptar la respuesta. Esta solución funcionó pero faltaba algo de información. En primer lugar, Google Docs implica que el prefijo de su nombre de actividad con un "." lo calificará completamente, lo que aparentemente es incorrecto. En segundo lugar, el espacio de nombres debe estar en minúsculas. Ya había intentado calificar completamente el nombre de la clase, pero no funcionó porque mi espacio de nombres tenía caracteres en mayúscula. No entiendo por qué este sería el caso. – dubj
Java requiere que los espacios de nombres se escriban en minúscula, por lo que Mono para Android lo traduce detrás de escena. En este caso, debe usar el nombre de clase completamente calificado de Java. Puede personalizar el espacio de nombres que se usará en las propiedades del proyecto, y siempre puede verificar el archivo AndroidManifest.xml generado durante el empaquetado en la carpeta obj/Debug/android para ver qué se está generando. –
No sabía eso sobre los espacios de nombres de Java o cómo encontrar el archivo de manifiesto generado. El que traté de mirar (empaquetado en la apk) estaba en formato binario. Esto fue muy útil, gracias! – dubj