现在我用这个:
var activity = (Activity)Forms.Context;
但是我应该用什么来代替呢?
根据此处接受的答案,我应该使用 Android.App.Application.Context
:Xamarin.Forms: Forms.Context is obsolete
但我无法将其转换为Activity
。
有什么解决办法吗?
UPD:我需要它来关闭库中的应用程序。
最佳答案
解决方案一: 使用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。对于这些情况,我们可以使用解决方案一,或者也在这些入口点中定义一个静态实例。
关于android - Forms.Context 已过时,那么我应该如何获取单个 Activity 应用程序的 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51258783/