我想在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);
}
}
我尝试了上述逻辑,但没有成功。请推荐。
您可以通过访问主显示信息而不是访问MainActivity来获取设备宽度和高度:
var width = DeviceDisplay.Current.MainDisplayInfo.Width;
var height = DeviceDisplay.Current.MainDisplayInfo.Height;
如果由于某种原因您确实需要访问 MainActivity,您可以通过执行以下操作在共享代码中的任何位置执行此操作:
#if ANDROID
var activity = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity;
#endif