Application.Current.<PageName> returns 空
Application.Current.<PageName> returns null
我正在 Xamarin.Forms 中使用 MVVM 模型开发应用程序,我在 PageService class 中使用此方法 DisplayAlert 在整个 ViewModels 中显示警报:
public async Task DisplayAlert(string title, string message, string ok = "ok")
{
await Application.Current.MainPage.DisplayAlert(title, message, ok);
}
一切正常,因为我在测试设备上重新安装了该应用程序并进行了一些不应影响 MainPage 的小更改。现在,每当我调用此 DisplayAlert 方法时,都会抛出异常:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
Xamarin.Forms.Application.MainPage.get returned null
真不知道哪里出错了。我四处搜索,唯一发现的是 MainPage 构造函数中可能存在一些问题,但就我而言,我没有看到任何问题。
所以现在我被困住了,不知道如何解决这个问题。你能不能至少给我指出一些方向,告诉我如何找出 MainPage returns 为空的原因?
非常感谢任何人的回应,我非常感谢你的建议。
此致,
本座
解决方案:
干杯,谢谢大家!我终于设法解决了这个问题:
所以我有这个 App 的构造函数,我按照 Lucas Zhang 的建议进行了编辑,并在那里添加了两个断点:
public static Page RootPage { get; set; }
public App()
{
InitializeComponent();
MainPage = new MainPage(); //Breakpoint 1
App.RootPage = MainPage; //Breakpoint 2
}
我发现,这段代码的执行方式如下:调试器在断点 1 处停止,然后在调试器到达断点 2 之前抛出异常。
现在,MainPage 实际上是包含 4 个其他选项卡的选项卡式页面,所有这些选项卡都在“MainPage = new MainPage();”时初始化。叫做。在其中一个选项卡中,我使用了一项服务。该服务所做的基本上是:初始化自身并确定用户是否做了某事,如果没有,它会显示一个警报,提示他这样做。所有这些都发生在 MainPage 完成初始化之前,因此当然在调用 App.Current.MainPage 时返回 null。
好了,就这样了,再次感谢大家!
确保您已经在 App.
的构造函数中设置了 MainPage
public App()
{
InitializeComponent();
MainPage = new xxxPage();
}
如果还是不行,您可以先使用下面的解决方法。
public static Page RootPage;
public App()
{
InitializeComponent();
MainPage = new MainPage();
App.RootPage = this.MainPage;
}
并引用它
App.RootPage.DisplayAlert(title, message, ok);
我正在 Xamarin.Forms 中使用 MVVM 模型开发应用程序,我在 PageService class 中使用此方法 DisplayAlert 在整个 ViewModels 中显示警报:
public async Task DisplayAlert(string title, string message, string ok = "ok")
{
await Application.Current.MainPage.DisplayAlert(title, message, ok);
}
一切正常,因为我在测试设备上重新安装了该应用程序并进行了一些不应影响 MainPage 的小更改。现在,每当我调用此 DisplayAlert 方法时,都会抛出异常:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
Xamarin.Forms.Application.MainPage.get returned null
真不知道哪里出错了。我四处搜索,唯一发现的是 MainPage 构造函数中可能存在一些问题,但就我而言,我没有看到任何问题。
所以现在我被困住了,不知道如何解决这个问题。你能不能至少给我指出一些方向,告诉我如何找出 MainPage returns 为空的原因?
非常感谢任何人的回应,我非常感谢你的建议。
此致, 本座
解决方案:
干杯,谢谢大家!我终于设法解决了这个问题: 所以我有这个 App 的构造函数,我按照 Lucas Zhang 的建议进行了编辑,并在那里添加了两个断点:
public static Page RootPage { get; set; }
public App()
{
InitializeComponent();
MainPage = new MainPage(); //Breakpoint 1
App.RootPage = MainPage; //Breakpoint 2
}
我发现,这段代码的执行方式如下:调试器在断点 1 处停止,然后在调试器到达断点 2 之前抛出异常。 现在,MainPage 实际上是包含 4 个其他选项卡的选项卡式页面,所有这些选项卡都在“MainPage = new MainPage();”时初始化。叫做。在其中一个选项卡中,我使用了一项服务。该服务所做的基本上是:初始化自身并确定用户是否做了某事,如果没有,它会显示一个警报,提示他这样做。所有这些都发生在 MainPage 完成初始化之前,因此当然在调用 App.Current.MainPage 时返回 null。
好了,就这样了,再次感谢大家!
确保您已经在 App.
的构造函数中设置了 MainPagepublic App()
{
InitializeComponent();
MainPage = new xxxPage();
}
如果还是不行,您可以先使用下面的解决方法。
public static Page RootPage;
public App()
{
InitializeComponent();
MainPage = new MainPage();
App.RootPage = this.MainPage;
}
并引用它
App.RootPage.DisplayAlert(title, message, ok);