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
问题出在 的[MetaData]属性上MainActivity。如果您提供该类的正确命名空间版本,搜索对话框将正确显示:
[MetaData ("android.app.default_searchable", Value = "searchdialogtest.SearchActivity")]
public class MainActivity : BaseActivity {
Run Code Online (Sandbox Code Playgroud)