Forms.Context已过时,因此如何获取单个活动应用程序的“活动”?

时间:2018-07-10 06:47:58

标签: android xamarin android-activity

现在我使用这个:

var activity = (Activity)Forms.Context;

但是我应该用什么代替?

根据此处接受的答案,我应该使用Android.App.Application.ContextXamarin.Forms: Forms.Context is obsolete

但是我无法将其投放到Activity中。

这里有什么解决方法吗?

UPD :我需要它来从库中关闭应用程序。

1 个答案:

答案 0 :(得分:1)

解决方案一: 使用 CurrentActivityPlugin 库。正确设置后:

var activity = CrossCurrentActivity.Current.Activity;

解决方案二: 在MainActivity类中定义一个静态实例:

public class MainActivity : FormsAppCompatActivity
{
    public static FormsAppCompatActivity Instance { get; private set; }

    protected override void OnCreate(Bundle bundle)
    {
        Instance = this;

        //other codes
    }
}

并像这样使用它:

var activity = MainActivity.Instance;

注意:显然,当应用程序的入口点为MainActivity时,应该使用解决方案二,而不是诸如后台服务,广播接收器等其他入口,否则MainActivity.Instance可能为null。对于这些情况,我们可以使用解决方案一,也可以在这些入口点中定义一个静态实例。