2017-07-07 10 views
1

以下は、Xamarin.FormsプロジェクトのApp.cssです。Xamarin.formsのメインページをAndroid-System.ArgumentExceptionでクラッシュする

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

    } 

ログインしても、引き出しアイコンは表示されません。 enter image description here

私は画面を回転しようとしましたが、表示されています。その後 enter image description here

、私は(それは私が上記App.cssのログアウト機能を呼び出す)ログアウトボタンをタップし、それが

System.ArgumentException 
Handle must be valid. 
Parameter name :instance 

enter image description here

を示し誰も私を助けてくださいことはできますか?

クイックインフォ: - 最小のAndroidバージョン:4.0.3(APIレベル15) - ターゲットAndroidのバージョン:自動 - 使用のターゲットバージョン(API 25) - Xamarin Androidのバージョン:7.3

更新:LoginPage

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> 

答えて

0

表示されないメニューアイコンは、MasterDetailPageの詳細ページでNavigationPage.SetHasNavigationBar(this, false);でした。

関連する問題