单声道Android中的搜索对话框

pro*_*eek 7 c# mono search android xamarin.android

我正在尝试按照此处的文档在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 {...
Run Code Online (Sandbox Code Playgroud)

我有一个可搜索的活动(繁重的地方会发生):

[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 { ...
Run Code Online (Sandbox Code Playgroud)

我有我的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>
Run Code Online (Sandbox Code Playgroud)

当我在MainActivity中按下手机上的搜索键时,没有任何反应 - 没有对话框.我认为我的问题在于如何在运行时将属性转换为AndroidManifest.xml但我不确定.

更新2012年1月3日: 我已经发布了一个项目,该项目在这里被提炼为最基本的元素.按Android上的搜索按钮,您应该看到SearchDialog,但它没有出现:Demo Project Here

Gre*_*les 4

问题出在 的[MetaData]属性上MainActivity。如果您提供该类的正确命名空间版本,搜索对话框将正确显示:

[MetaData ("android.app.default_searchable", Value = "searchdialogtest.SearchActivity")]
public class MainActivity : BaseActivity {
Run Code Online (Sandbox Code Playgroud)