Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序。当前。<;页面名称>;返回空值_C#_Xamarin_Xamarin.forms_Xamarin.android_Xamarin.uwp - Fatal编程技术网

C# 应用程序。当前。<;页面名称>;返回空值

C# 应用程序。当前。<;页面名称>;返回空值,c#,xamarin,xamarin.forms,xamarin.android,xamarin.uwp,C#,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.uwp,我正在Xamarin中开发一个应用程序。表单使用MVVM模型,我使用PageService类中的DisplayAlert方法在整个ViewModels中显示警报: public async Task DisplayAlert(string title, string message, string ok = "ok") { await Application.Current.MainPage.DisplayAlert(title, message, ok); } 一

我正在Xamarin中开发一个应用程序。表单使用MVVM模型,我使用PageService类中的DisplayAlert方法在整个ViewModels中显示警报:

public async Task DisplayAlert(string title, string message, string ok = "ok")
{
    await Application.Current.MainPage.DisplayAlert(title, message, ok);
}
一切正常,因为我在测试设备上重新安装了应用程序,并做了一些不应该影响主页的小改动。现在,无论何时调用此DisplayAlert方法,都会引发异常:

System.NullReferenceException:“对象引用未设置为对象的实例。”

Xamarin.Forms.Application.MainPage.get返回null

我真的不知道这个错误是从哪里来的。我在谷歌上搜索了一下,唯一发现的是主页构造函数可能有一些问题,但在我的例子中,我没有看到任何问题

所以现在我陷入困境,不知道如何解决这个问题。你能至少告诉我一些关于如何找出主页返回空值的方法吗

非常感谢所有回复的人,我非常感谢你们的建议

问候,, 本扎

解决方案: 干杯,谢谢大家!我终于解决了这个问题: 因此,我有一个应用程序的构造函数,我按照Lucas Zhang的建议进行了编辑,并在其中添加了两个断点:

公共静态页面根页面{get;set;}
公共应用程序()
{
初始化组件();
MainPage=newmainpage();//断点1
App.RootPage=MainPage;//断点2
}
我发现,这段代码的执行方式如下:Debbuger在断点1处停止,然后在调试器到达断点2之前抛出异常。 现在,MainPage实际上是由4个其他选项卡组成的选项卡式页面,所有这些选项卡都是在调用“MainPage=new MainPage();”时初始化的。在其中一个选项卡中,我使用服务。该服务的基本功能是:初始化自身并确定用户是否做了某件事,如果没有,它将显示一个提示用户这样做的警报。所有这些都发生在主页完成初始化之前,因此调用App.Current.MainPage时,当然返回null


就这样,再次感谢大家

确保您已在应用程序的构造函数中设置了主页

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);

似乎是一个完全相同的答案吗?