C# 如何在我的Mono for Android项目中获得Google提供的Android.Resource.Layout参考
我有一个Mono for Android项目,它使用以下代码编译并成功运行。但是,复制/粘贴到我正在处理的较新项目中会导致编译器错误,指示:[appnamespace].Android.Resource.Layout不包含“SimpleListItem2”的定义 如果我试图访问我定义的xml资源布局,我会预料到这个错误,但我试图访问Google提供的默认布局,特别是“SimpleListem2”。我需要做些什么让编译器识别默认布局吗?谢谢C# 如何在我的Mono for Android项目中获得Google提供的Android.Resource.Layout参考,c#,android,xamarin.android,C#,Android,Xamarin.android,我有一个Mono for Android项目,它使用以下代码编译并成功运行。但是,复制/粘贴到我正在处理的较新项目中会导致编译器错误,指示:[appnamespace].Android.Resource.Layout不包含“SimpleListItem2”的定义 如果我试图访问我定义的xml资源布局,我会预料到这个错误,但我试图访问Google提供的默认布局,特别是“SimpleListem2”。我需要做些什么让编译器识别默认布局吗?谢谢 public override View GetView
public override View GetView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null) {
LayoutInflater li = (LayoutInflater)this.Context.GetSystemService(Context.LayoutInflaterService);
v = li.Inflate(Android.Resource.Layout.SimpleListItem2, null);
}
TextView tt = (TextView)v.FindViewById(Android.Resource.Id.Text1);
if (tt != null) { tt.Text = string.Format("{0}, {1}", this.LastName, this.FirstName); }
return v;
}
基本上,我希望在Mono.Android程序集中的Android.Resource.Layout命名空间下访问这些布局:
ActivityListItemBrowserLInkContextHeader
可扩展列表内容
首选类别
选择DialogItem
选择DialogMultichoice
SelectDialogSingleChoice
SimpleDropDownItem1Line
SimpleExpandableListItem1
SimpleExpandableListItem2
SimpleGalleryItem
单纯形结构1
简单结构2
SimpleListItemChecked
SimpleListItemMultipleChoice
SimpleListItemSingleChoice
SimpleListItemDropDownItem
SimpleSpinnerItem
TestListItem
TwoLineListItem
似乎名称空间冲突导致了此错误。在名称空间中使用“Android”时请注意 如果应用程序的名称空间包含“Android”,那么Xamarin的Mono for Android编译器似乎很难解析Google的SimpleListItem2对象 要体验该错误,“Android”字符串必须是命名空间中的完整字符串(而不是子字符串)。命名空间“BenHorgen.Android.MyApps.TestApp”将导致编译器错误
更具体地说,将字符串“Android”作为子字符串包含在名称空间中不会导致问题。例如:“BenHorgen.MyAndroidApps.TestApp”不会给我带来问题 似乎名称空间冲突导致了此错误。在名称空间中使用“Android”时请注意 如果应用程序的名称空间包含“Android”,那么Xamarin的Mono for Android编译器似乎很难解析Google的SimpleListItem2对象 要体验该错误,“Android”字符串必须是命名空间中的完整字符串(而不是子字符串)。命名空间“BenHorgen.Android.MyApps.TestApp”将导致编译器错误 更具体地说,将字符串“Android”作为子字符串包含在名称空间中不会导致问题。例如:“BenHorgen.MyAndroidApps.TestApp”不会给我带来问题 这是一种C语言功能,其行为符合C语言规范 考虑这个例子:
using System;
namespace Example {
namespace System {
}
class Bad : System.Object {
}
}
以上未能编译:
ns.cs(8,24): error CS0234: The type or namespace name `Object' does not exist in
the namespace `Example.System'. Are you missing an assembly reference?
对于.NET CSC和Mono的mcs编译器来说都是如此
为什么??参见第100-102页§10.8的名称空间和类型名称
- 否则,名称空间或类型名称的格式为
或N.I
。N.I
首先解析为命名空间或类型名N
System.Object
,其形式为N.I
。所以
我们需要首先解决系统
:
- 否则,如果名称空间或类型名称的格式为
或I
:I
...- 否则,对于每个名称空间N,从 出现名称空间或类型名称,并在每个封闭名称空间中继续 (如果有),并以全局名称空间结尾,将计算以下步骤 在实体找到之前:
System
解析为Example.System
。现在系统
已关闭
已解析编译器尝试解析系统对象
,即
示例.System.Object的限定名
。这种类型不存在,我们得到
一个错误
上述示例的修复程序是什么?使用全局::
:
class Bad : global::System.Object {
}
你的Android代码也是如此;如果你正好在
Example.Android
名称空间,您需要使用Android.Resource.Layout
键入,然后使用
global::Android.Resource.Layout
或者,您可以使用在声明时解析的using别名,允许:
using System;
using MyObject = System.Object;
namespace Example {
namespace System {
}
class Bad : MyObject {
}
}
这是一种C语言功能,其行为符合C语言规范
考虑这个例子:
using System;
namespace Example {
namespace System {
}
class Bad : System.Object {
}
}
以上未能编译:
ns.cs(8,24): error CS0234: The type or namespace name `Object' does not exist in
the namespace `Example.System'. Are you missing an assembly reference?
对于.NET CSC和Mono的mcs编译器来说都是如此
为什么??参见第100-102页§10.8的名称空间和类型名称
- 否则,名称空间或类型名称的格式为
或N.I
。N.I
首先解析为命名空间或类型名N
System.Object
,其形式为N.I
。所以
我们需要首先解决系统
:
- 否则,如果名称空间或类型名称的格式为
或I
:I
...- 否则,对于每个名称空间N,从 出现名称空间或类型名称,并在每个封闭名称空间中继续 (如果有),并以全局名称空间结尾,将计算以下步骤 在实体找到之前:
System
解析为Example.System
。现在系统
已关闭
已解析编译器尝试解析系统对象
,即
示例.System.Object的限定名
。这种类型不存在,我们得到
一个错误
上述示例的修复程序是什么?使用全局::
:
class Bad : global::System.Object {
}
你的Android代码也是如此;如果你正好在
Ex