Xamarin Android - 找不到类型或命名空间“上下文”

Posted

技术标签:

【中文标题】Xamarin Android - 找不到类型或命名空间“上下文”【英文标题】:Xamarin Android - Type or namespace "Context" could not be found 【发布时间】:2017-11-21 04:58:11 【问题描述】:

我正在关注this Xamarin 教程。当我在我的 android 项目中使用“上下文”类时,Visual Studio 会引发错误。默认情况下,这个类不应该包含在我的 Android 应用中吗?

此外,我在名为“Portable”的可移植类库中定义了一个名为“IStreamLoader”的接口,并在我的 Android 项目中添加了对“Portable”的引用。但是在我的 Android 项目中引用“IStreamLoader”会引发另一个错误。

这两个错误有关系吗?

错误

CS0246  The type or namespace name 'IStreamLoader' could not be found (are you missing a using directive or an assembly reference?)

CS0246  The type or namespace name 'Context' could not be found (are you missing a using directive or an assembly reference?)

CS0246  The type or namespace name 'Context' could not be found (are you missing a using directive or an assembly reference?)

MyTunes.Droid\MainActivity.cs

using System.Linq;
using Android.App;
using Android.OS;

namespace MyTunes

    [Activity(Label = "My Tunes", MainLauncher = true)]
    public class MainActivity : ListActivity
    
        protected async override void OnCreate(Bundle bundle)
        
            base.OnCreate(bundle);

            var data = await SongLoader.Load();

            ListAdapter = new ListAdapter<Song>() 
                DataSource = data.ToList(),
                TextProc = s => s.Name,
                DetailTextProc = s => s.Artist + " - " + s.Album
            ;
        
    

    public class StreamLoader : IStreamLoader
    
        private readonly Context context;

        public StreamLoader(Context context)
        
            this.context = context;
        
        public Stream GetStreamForFilename(string filename)
        
            return context.Assets.Open(filename);
        
    

Portable\IStreamLoader.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace Portable

    public interface IStreamLoader
    
        System.IO.Stream GetStreamForFilename(string filename);
    

【问题讨论】:

【参考方案1】:

试试这个:

using Android.Content;

【讨论】:

哇,是的,它修复了“上下文”错误,谢谢!你知道为什么我的“IStreamLoader”引用可能会失败吗? 尝试使用 Portable 或公共类 StreamLoader : Portable.IStreamLoader 嗯,显然 Portable\IStreamLoader.cs 命名空间必须设置为解决方案名称,而不是项目名称。尽管您的上述解决方案也有效。

以上是关于Xamarin Android - 找不到类型或命名空间“上下文”的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Visual Studio 2019 (XAMARIN) 中找不到 Android 库

重新安装 Windows/Visual Studio 2015/Xamarin - 找不到 Android SDK

Xamarin中打开别人项目找不到android.jar文件

在 Xamarin.Android 中找不到与给定名称(在“headerLayout”处)匹配的资源

Xamarin Android - 找不到.so文件

使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib