NullReferenceException Message=无法检测到当前活动。确保您已在 Activity 或 Application 类中调用了 Init

问题描述 投票:0回答:1

异常: System.NullReferenceException Message=无法检测到当前活动。确保您已在 Activity 或 Application 类中调用了 Init。

我在哪里遇到此问题: 使用 httpclient 访问 API 时,如下所示

var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
var response = await _client.PostAsync(uri, content);

请帮我提出您的建议

环境:.NET 8、Android、MAUI、Visual studio。

情况:我将Android Xamarin(.NET Framework)应用程序升级到MAUI。

主要活动类:

[Activity(Name = "Test.MainActivity", Label = "Test Mobile", Icon = "@drawable/icon"
    , LaunchMode = LaunchMode.SingleTask, MainLauncher = true, ScreenOrientation = ScreenOrientation.Portrait, Theme = "@style/Maui.SplashTheme"
    , ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Microsoft.Maui.MauiAppCompatActivity
{
    internal static MainActivity Instance { get; private set; }

    // for FCM push notifications
    internal static readonly string CHANNEL_ID = "fcm_notification_channel";
    internal static readonly int NOTIFICATION_ID = 100;

    enum EnvCheckType { Root, Debug, Emulator, Hooks, CustomFirmware, IntegrityCheck, WirelessSecurity };
    static BitArray envChecks = new BitArray(7);

    private MyBroadcastReceiver mMessageReceiver = new MyBroadcastReceiver();

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

            base.OnCreate(savedInstanceState);
        }
        catch (Exception ex)
        {
            ExceptionLogger.LogErrorAsync(ex);
        }
    }
}

主要应用:

[Application]
public class MainApplication : MauiApplication
{
    // for FCM push notifications
    internal static readonly string CHANNEL_ID = "fcm_notification_channel";
    internal static readonly int NOTIFICATION_ID = 100;

    enum EnvCheckType { Root, Debug, Emulator, Hooks, CustomFirmware, IntegrityCheck, WirelessSecurity };
    static BitArray envChecks = new BitArray(7);

    public MainApplication(nint handle, JniHandleOwnership ownership) : base(handle, ownership)
    {
    }

    protected override MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder.UseMauiApp<App>().UseMauiCommunityToolkit();
        
        return builder.Build();
    }
}

我尝试对 Mainactivity 和 HttpClient 进行多项更改,但没有任何效果

android maui
1个回答
0
投票

关于此错误:

NullReferenceException Message=无法检测到当前活动。确保您已在 Activity 或 Application 类中调用了 Init

您可以添加此代码:

public class MainActivity : MauiAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        base.OnCreate(savedInstanceState);
    }
}

并尝试将

builder.UseMauiApp<App>().UseMauiCommunityToolkit();
和 FCM 推送通知代码放入 MauiProgram.cs 而不是 MainApplication 中。

© www.soinside.com 2019 - 2024. All rights reserved.