在.NET MAUI应用程序中,如何访问App类中的MainActivity实例

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

我想在App类中使用

MainActivity.Instance
来获取设备的高度和宽度。但在 MAUI 应用程序中,App 类逻辑在
MainActivity
类执行之前执行。所以我得到
Mainactivity.Instance
为空。

以下是我的课程。请推荐

主应用程序类:

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

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

         return builder.Build();
     }
}

主要活动类:

public class MainActivity : global::Microsoft.Maui.MauiAppCompatActivity
{
    internal static MainActivity Instance { get; private set; }

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

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

App类中调用MainActivity.Instance的逻辑:

public int ScreenWidth
{
    get
    {
        var density = MainActivity.Instance.Resources.DisplayMetrics.Density;
        return Convert.ToInt32(_screenWidth / density);
    }
}

我尝试了上述逻辑,但没有成功。请推荐。

maui
1个回答
0
投票

您可以通过访问主显示信息而不是访问MainActivity来获取设备宽度和高度:

var width = DeviceDisplay.Current.MainDisplayInfo.Width;
var height = DeviceDisplay.Current.MainDisplayInfo.Height;

如果由于某种原因您确实需要访问 MainActivity,您可以通过执行以下操作在共享代码中的任何位置执行此操作:

#if ANDROID
    var activity = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity;
#endif
© www.soinside.com 2019 - 2024. All rights reserved.