在 Xamarin.Forms 中访问 Android 上下文

Accessing Android Context in Xamarin.Forms

我见过一些使用 Xamarin.Forms 获取 Android 上下文的旧解决方案。这些较旧的解决方案建议使用 Xamarin.Forms.Forms.Context,但由于不断变化的 Xamarin.Forms 平台,这不再有效。

在我的示例中,我使用共享代码项目中的 DependencyService.Get<Interface>() 来使用 Interface class.

的平台特定实现

使用 Xamarin.Andriod.

使用平台特定功能时,需要大量使用 Android 上下文

那么我们如何获得Android上下文的全局信息接口?

  1. 转到您在解决方案的 App.Droid 项目部分创建的 class。
  2. 确保 using Android.Content; 包含在顶部。
  3. 创建一个变量来保存 Context 并用 Android.App.Application.Context 初始化它。

就是这样!

using Android.Content;

[assembly: Xamarin.Forms.Dependency(typeof(DroidClass))]
namespace App.Droid
{
   public class DroidClass : Interface
   {
     Context context = Android.App.Application.Context;

     public DroidClass()
     {
        Toast.MakeText(context, "Grabbed Context!", ToastLength.Long).Show();
         }  
      }
   }