C# 如何在我的Mono for Android项目中获得Google提供的Android.Resource.Layout参考

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

我有一个Mono for Android项目,它使用以下代码编译并成功运行。但是,复制/粘贴到我正在处理的较新项目中会导致编译器错误,指示:[appnamespace].Android.Resource.Layout不包含“SimpleListItem2”的定义

如果我试图访问我定义的xml资源布局,我会预料到这个错误,但我试图访问Google提供的默认布局,特别是“SimpleListem2”。我需要做些什么让编译器识别默认布局吗?谢谢

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命名空间下访问这些布局:

ActivityListItem
BrowserLInkContextHeader
可扩展列表内容
首选类别
选择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