异常: 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 进行多项更改,但没有任何效果
关于此错误:
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 中。