C# Mono Android中的搜索对话框
我正试图根据以下文档在Mono Android应用程序中实现搜索对话框: 我有一个活动,用户应该能够从中搜索:C# Mono Android中的搜索对话框,c#,android,search,mono,xamarin.android,C#,Android,Search,Mono,Xamarin.android,我正试图根据以下文档在Mono Android应用程序中实现搜索对话框: 我有一个活动,用户应该能够从中搜索: [Activity (Label = "MyActivity", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/MyStyle")] [MetaData ("android.app.default_searchable", Value = ".SearchActivity")] public class M
[Activity (Label = "MyActivity", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/MyStyle")]
[MetaData ("android.app.default_searchable", Value = ".SearchActivity")]
public class MainActivity : 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>
当我在Main活动中按手机上的搜索键时,什么都没有发生-没有对话框。我认为我的问题在于如何在运行时将属性转换为AndroidManifest.xml,但我不确定
2012年1月3日更新:
我在这里发布了一个浓缩到最基本元素的项目。按下Android上的搜索按钮,您会看到搜索对话框,但它不会出现:问题在于
MainActivity
上的[MetaData]
属性。如果提供类的正确命名空间版本,则搜索对话框将正确显示:
[MetaData ("android.app.default_searchable", Value = "searchdialogtest.SearchActivity")]
public class MainActivity : BaseActivity {
我觉得在清单文件中,searchable元数据标记不正确(android:name=“android.app.searchable”) 样本舱单- 主活动标签-
搜索活动标签-
<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>
在serachable.xml中,不能使用常量字符串作为名称和提示。。。它们应该动态链接
@string/my\u app\u name
@string/my\u hint
所有的工作都很好 对不起,我等了这么久才接受答案。此解决方案有效,但缺少一些信息。首先,谷歌文档暗示在你的活动名称前加“.”将完全限定它,这显然是错误的。其次,名称空间必须是小写的。我已经尝试过完全限定类名,但没有成功,因为我的命名空间中有大写字符。我不明白为什么会这样。Java要求名称空间是小写的,所以Mono for Android在幕后为您翻译了这个。在这种情况下,必须使用Java完全限定类名。您可以自定义将在项目属性中使用的名称空间,并且您可以始终检查在obj/Debug/android文件夹中打包期间生成的AndroidManifest.xml文件,以查看生成的内容。不知道Java名称空间或如何查找生成的清单文件。我试图查看的一个(打包在apk中)是二进制格式的。这很有帮助,谢谢!
<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>