为什么可以';我不能这样访问我的Xamarin.Android项目的资产文件夹吗?

为什么可以';我不能这样访问我的Xamarin.Android项目的资产文件夹吗?,xamarin,xamarin.android,Xamarin,Xamarin.android,我想将TextView的字体设置为Assets文件夹中的字体。问题代码是“var font=Typeface.CreateFromAsset(Assets,“Enter The Grid.ttf”);”,不是第一次使用,而是代码末尾的第二次使用(“Assets”下面出现了红色的曲线) namespace underroundsports.Android { [活动] 公共类城市页面:活动 { 运动[]运动=运动,运动; 创建时受保护的覆盖无效(Bundle savedInstanceState)

我想将TextView的字体设置为Assets文件夹中的字体。问题代码是“var font=Typeface.CreateFromAsset(Assets,“Enter The Grid.ttf”);”,不是第一次使用,而是代码末尾的第二次使用(“Assets”下面出现了红色的曲线)

namespace underroundsports.Android
{
[活动]
公共类城市页面:活动
{
运动[]运动=运动,运动;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.CityPage);

var font=Typeface.CreateFromAsset(资产,“输入网格.ttf”); 按钮bttJoin=findviewbyd(Resource.Id.bttJoin); bttJoin.单击+=(发件人,e)=> { gotoJoinPage(); }; bttJoin.Typeface=font; ListView lstSports=FindViewById(Resource.Id.lstSport); lstports.Adapter=新的SportsAdapter(此为sports); lstports.ItemClick+=(对象发送者,AdapterView.ItemClickEventArgs e)=> { 从列表中选择的运动=运动[e.位置]; Global.Instance.CurrentSport=从列表中选择; gotoMembersPage(); }; } 私有void gotoJoinPage() { var intent=新的intent(此,类型为(JoinPage)); 星触觉(意向); } 私有void gotoMembersPage() { var intent=新的intent(这是,类型为(MembersPage)); 星触觉(意向); } 公共类SportsAdapter:BaseAdapter { 体育[]项目; 活动语境; 公共SportsAdapter(活动上下文,运动[]项):base() { this.context=上下文; 这个项目=项目; } 公共覆盖长GetItemId(int位置) { 返回位置; } 公共覆盖此[内部位置] { 获取{返回项目[位置];} } 公共覆盖整数计数 { 获取{return items.Length;} } 公共覆盖视图GetView(int位置、视图转换视图、视图组父视图) { 视图=转换视图; 如果(视图==null) view=context.LayoutInflater.Inflate(全局::Android.Resource.Layout.SimpleListItem1,null); TextView txtView=view.findviewbyd(全局::Android.Resource.Id.Text1);
var font=Typeface.CreateFromAsset(资产,“输入网格.ttf”); txtView.Text=项目[位置].Name; txtView.Gravity=重力梯度中心; txtView.Typeface=font; 返回视图; } } }
}

但是当我试图创建一个包含字体的变量时,我得到一个错误,告诉我:

无法通过嵌套类型访问外部类型为Android.Content.Context的非静态成员(CS0038)(UndergroundSportsAndroid)

通过查看相关问题,我认为我需要创建Assets对象的实例,或者将其设置为静态

我对C#非常陌生,不太了解发生了什么。如果有人能解释为什么我无法访问代码这一部分中的资产,我将不胜感激。最让我困惑的是,我使用完全相同的代码行访问同一文件中的字体,而没有出现错误

var font = Typeface.CreateFromAsset(context.Assets, "Enter-The-Grid.ttf");
通过构造函数将活动的实例传递给适配器,并使用它访问资产

public class SportsAdapter : BaseAdapter<Sport>
{
    Sport[] items;
    Activity context;
    public SportsAdapter(Activity context, Sport[] items) : base()
    {
        this.context = context;
        this.items = items;
    }

    ....

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        if (view == null)
            view = context.LayoutInflater.Inflate(global::Android.Resource.Layout.SimpleListItem1, null);
        TextView txtView = view.FindViewById<TextView>(global::Android.Resource.Id.Text1);
        var font = Typeface.CreateFromAsset(context.Assets, "Enter-The-Grid.ttf");
        txtView.Text = items[position].Name;
        txtView.Gravity = GravityFlags.Center;
        txtView.Typeface = font;
        return view;
    }
}
公共类SportsAdapter:BaseAdapter
{
体育[]项目;
活动语境;
公共SportsAdapter(活动上下文,运动[]项):base()
{
this.context=上下文;
这个项目=项目;
}
....
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
视图=转换视图;
如果(视图==null)
view=context.LayoutInflater.Inflate(全局::Android.Resource.Layout.SimpleListItem1,null);
TextView txtView=view.findviewbyd(全局::Android.Resource.Id.Text1);

var font=Typeface.CreateFromAsset(context.Assets,“Enter The Grid.ttf”); txtView.Text=项目[位置].Name; txtView.Gravity=重力梯度中心; txtView.Typeface=font; 返回视图; } }

另外,请确保将.ttf文件的生成操作设置为AndroidAssets。正确的.tff文件>生成操作>AndroidAsset

SportsAdapter是嵌套在CityPage活动中的类。SportsAdapter不知道上下文是什么。CityPage知道。解决此问题的最简单方法是在创建SportsAdapter的实例。我将您答案中的代码与当前代码进行了比较,结果完全相同。是否要包含您建议的更改?如果这样做,将非常有用。var font=Typeface.CreateFromAsset(context.Assets,“Enter the Grid.ttf”);请参见此行。它是context.Assets
public class SportsAdapter : BaseAdapter<Sport>
{
    Sport[] items;
    Activity context;
    public SportsAdapter(Activity context, Sport[] items) : base()
    {
        this.context = context;
        this.items = items;
    }

    ....

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        if (view == null)
            view = context.LayoutInflater.Inflate(global::Android.Resource.Layout.SimpleListItem1, null);
        TextView txtView = view.FindViewById<TextView>(global::Android.Resource.Id.Text1);
        var font = Typeface.CreateFromAsset(context.Assets, "Enter-The-Grid.ttf");
        txtView.Text = items[position].Name;
        txtView.Gravity = GravityFlags.Center;
        txtView.Typeface = font;
        return view;
    }
}