C# 在Xamarin.forms中设置主页会在Android-System.ArgumentException上崩溃
下面是我在Xamarin.Forms项目中的App.cssC# 在Xamarin.forms中设置主页会在Android-System.ArgumentException上崩溃,c#,android,xamarin.android,xamarin.forms,master-detail,C#,Android,Xamarin.android,Xamarin.forms,Master Detail,下面是我在Xamarin.Forms项目中的App.css public partial class App : Application { //public static string access_token; //public static string bearer; public static new App Current; public App() { Initializ
public partial class App : Application
{
//public static string access_token;
//public static string bearer;
public static new App Current;
public App()
{
InitializeComponent();
Current = this;
var isLoggedIn = Properties.ContainsKey("IsLoggedIn") ? (bool)Properties["IsLoggedIn"] : false;
if (isLoggedIn)
MainPage = new NavigationPage(new MasterPage());
else
MainPage = new NavigationPage(new LoginPage());
}
......
protected async override void OnResume()
{
base.OnResume();
}
public async void OnBackButtonPressed(object sender, EventArgs e)
{
}
public void ShowMainPage()
{
MainPage = new NavigationPage(new MasterPage());
}
public void Logout()
{
Properties["IsLoggedIn"] = false; // only gets set to 'true' on the LoginPage
MainPage = new NavigationPage(new LoginPage());
}
}
当我登录时,抽屉图标不显示。
我试着旋转屏幕,现在它显示出来了。
之后,我点击了注销按钮(它调用了我上面提到的App.css的注销功能),它显示
System.ArgumentException
Handle must be valid.
Parameter name :instance
有人能帮我吗
快速信息:
-最低Android版本:4.0.3(API级别15)
-目标Android版本:自动-使用目标版本(API 25)
-Xamarin Android版本:7.3
更新:登录页面
public partial class LoginPage : ContentPage
{
RestService service;
public LoginPage()
{
InitializeComponent();
var signInGesture = new TapGestureRecognizer();
signInGesture.Tapped += SignInGesture_Tapped;
signInButton.GestureRecognizers.Add(signInGesture);
NavigationPage.SetHasNavigationBar(this, false);
}
async void SignInGesture_Tapped(object sender, EventArgs e)
{
await signInButton.ScaleTo(0.95, 50, Easing.CubicOut);
signInButton.ScaleTo(1, 50, Easing.CubicIn);
if (string.IsNullOrEmpty(emailEntry.Text) || string.IsNullOrEmpty(passwordEntry.Text) )
await DisplayAlert("Error", "Username and Password should not be empty.", "OK");
else if(!Utils.IsValidEmail(emailEntry.Text))
await DisplayAlert("Error", "Email should be in valid format.", "OK");
else
{
loadingIndicator.IsRunning = true;
var login = new Login{
grant_type = "password",
username = emailEntry.Text,
password = passwordEntry.Text
};
service = new RestService();
var response = await service.Login(login);
if (response != null)
{
if (response.status_code == System.Net.HttpStatusCode.OK)
{
App.Current.Properties["IsLoggedIn"] = true;
App.Current.ShowMainPage();
}
else
{
loadingIndicator.IsRunning = false;
await DisplayAlert(response.error, response.error_description, "OK");
}
}
else
{
loadingIndicator.IsRunning = false;
await DisplayAlert("Failed", Config.CommonErrorMsg, "OK");
}
}
}
async void ResetButton_Clicked(object sender, EventArgs e)
{
loadingIndicator.IsRunning = false;
await Navigation.PushAsync(new ForgetPasswordPage());
}
}
母版页:CS文件中的构造函数为空,我只是附加XAML
<?xml version="1.0" encoding="UTF-8"?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MyTenantWorld.MasterPage" xmlns:local="clr-namespace:MyTenantWorld;assembly=MyTenantWorld">
<MasterDetailPage.Master>
<local:MenuPage x:Name="menuPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<local:HomePage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
</MasterDetailPage>
不可见的菜单图标带有NavigationPage.SetHasNavigationBar(此为false)。不可见的菜单图标带有NavigationPage.SetHasNavigationBar(此为false)代码>在MasterDetailPage的详细信息页上。在哪里可以解决该错误?System.ArgumentException:句柄必须有效。参数名称:您能够解决该错误的实例?System.ArgumentException:句柄必须有效。参数名称:实例