我正在开发一个Xamarin表单应用程序。我在App.cs上检查
CrossSecureStorage.Current.HasKey("SessionToken")
然后导航到HomePage()这是一个Masterdetailspage,如果没有安全令牌,那么我导航到LoginPage(),这是一个像这样的ContentPage
if (CrossSecureStorage.Current.HasKey("SessionToken"))
MainPage = new NavigationPage(new HomePage(true));
else
MainPage = new NavigationPage(new LoginPage(this));
然后当用户点击登录按钮时,我将主页设置为HomePage(),如下所示
MainPage = new NavigationPage(new HomePage(true));
当用户点击退出按钮时,我将主页设置为再次登录
CrossSecureStorage.Current.DeleteKey("SessionToken");
MainPage = new NavigationPage(new LoginPage(this));
当用户已经注销时,它可以正常工作。登录和注销都很好。但如果用户已经登录,则说
CrossSecureStorage.Current.HasKey("SessionToken")
有值,然后登出按钮按应用程序崩溃并获得此异常
System.ArgumentException: Handle must be valid.Parameter name: instance
我发现如果在App.cs中我将HomePage从MasterDetailsPage更改为新的ContentPage然后按下按钮将MainPage更改为HomePage然后它工作正常但我想直接向用户显示主页。 (意味着如果分配给MainPage的第一页是ContentPage,那么应用程序工作正常,但如果第一页是MasterDetailsPage,则应用程序在重新分配MainPage到任何页面时崩溃。) 请帮忙。 在此先感谢。