Диалог поиска в моно Android - PullRequest
7 голосов
/ 15 декабря 2011

Я пытаюсь реализовать диалог поиска в приложении Mono Android согласно документации здесь: http://developer.android.com/guide/topics/search/search-dialog.html

У меня есть активность, по которой пользователь должен иметь возможность искать:

[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, но он не появляется: Демонстрационный проект здесь

Ответы [ 3 ]

4 голосов
/ 03 января 2012

Проблема в атрибуте [MetaData] в MainActivity.Если вы укажете правильную версию класса в пространстве имен, диалоговое окно поиска будет отображаться правильно:

[MetaData ("android.app.default_searchable", Value = "searchdialogtest.SearchActivity")]
public class MainActivity : BaseActivity {
1 голос
/ 07 февраля 2012

в вашем serachable.xml вы не можете иметь постоянную строку в качестве имени и подсказки ... они должны быть связаны динамически @string/my_app_name @string/my_hint

и все в порядке!

0 голосов
/ 04 января 2012

Я чувствую, что в файле манифеста некорректный тег метаданных (android: name = "android.app.searchable")

Образец манифеста - MainActivity Tag -

<activity android:name=".MainActivity"> <meta-data android:name="android.app.default_searchable" android:value="pckname.SearchClass"/> </activity>

Тег SearchActivity -

<activity android:name=".SearchActivity" >
<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>
...