Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mono Android中的搜索对话框_C#_Android_Search_Mono_Xamarin.android - Fatal编程技术网

C# 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

我正试图根据以下文档在Mono Android应用程序中实现搜索对话框:

我有一个活动,用户应该能够从中搜索:

[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>