在 Xamarin.forms 中设置 MainPage 在 Android 上崩溃 - System.ArgumentException

Setting the MainPage in Xamarin.forms crashes on Android - System.ArgumentException

下面是我在 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()
        {
            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());
        }

    }

MasterPage: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>

不可见的菜单图标在 MasterDetailPage 的详细信息页面上带有 NavigationPage.SetHasNavigationBar(this, false);