Я пытаюсь реализовать диалог поиска в приложении Mono для Android в документации здесь: http://developer.android.com/guide/topics/search/search-dialog.htmlПоиск Диалог в Mono Android
У меня есть действие, которое пользователь должен иметь возможность искать от:
[Activity (Label = "MyActivity", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/MyStyle")]
[MetaData ("android.app.default_searchable", Value = ".SearchActivity")]
public class MainActivity : BaseActivity {...
у меня есть для поиска активности (где тяжелая атлетика будет происходить):
[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 { ...
И у меня 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>
Когда я нажимаю клавишу поиска по телефону в MainActivity, ничего не происходит - нет диалога. Я думаю, что моя проблема заключается в том, как атрибуты переводится в AndroidManifest.xml во время выполнения, но я не уверен.
ОБНОВЛЕНИЕ 1/3/2012: Я разместил проект, отобранный до самых основных элементов здесь. Нажмите кнопку поиска на вашем Android и вы увидите SearchDialog, но он не появится: Demo Project Here
Извините, я так долго ждал, чтобы принять ответ. Это решение работало, но не хватало некоторой информации. Прежде всего, в Документах Google подразумевается, что префикс имени вашей деятельности с именем «.» будет полностью квалифицировать его, что, по-видимому, неверно. Во-вторых, пространство имен должно быть строчным. Я уже пробовал полностью квалифицировать имя класса, но это не сработало, потому что в моем пространстве имен были символы верхнего регистра. Я не понимаю, почему это так. – dubj
Java требует, чтобы пространства имен были снижены, поэтому Mono for Android переводит это для вас за кулисами. В этом случае вам нужно было использовать полное имя класса Java. Вы можете настроить пространство имен, которое будет использоваться в свойствах проекта, и вы всегда можете проверить файл AndroidManifest.xml, сгенерированный во время упаковки, в папке obj/Debug/android, чтобы узнать, что создается. –
Не знал, что о пространствах имен Java или о том, как найти сгенерированный файл манифеста. Тот, который я пытался посмотреть (упакованный в apk), был в двоичном формате. Это было очень полезно, спасибо! – dubj