android - Forms.Context 已过时,那么我应该如何获取单个 Activity 应用程序的 Activity ?

标签 android xamarin android-activity

现在我用这个:

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/

相关文章:

javascript - android textview 中带有 <style> 标签和样式的 Html 字符串

xcode - Xamarin:错误 MT1108:找不到此 11.0.3 (15A432) 设备的开发人员工具

android - Activity 不是从两个不同的开始,而是从一个开始

java - Fragments 和 Activity 中自定义对象是按值传递还是按引用传递?

android - 使用 sqlite ORDERBY 字段

Android,您为哪种屏幕尺寸开发?

java - 找不到 native 方法 : com. example.pjtest.JniClass.get_time:()C

ios - MT5212 : Native linking failed, 重复符号: '_OBJC_IVAR_$_FIRInstanceID._tokenManager'

xamarin - ReactiveUI Xamarin iOS 路由

android - 读取特定号码的短信