2017-09-01 6 views
0

MessagingCenterを使用して簡単なナビゲーションを構築しようとしていますが、戻るボタン(ハードウェアボタン)を押したときにSystem.Reflection.TargetInvocationExceptionを受け取っています。System.Reflection.TargetInvocationException on MessagingCenter.Send

ここでエラーが発生します。私は、私のログインをクリックします(ハードウェアボタン)アプリが最小限に抑えてしまった後
はその後、私は
その後、最近のアプリで開くバックボタンを押し
アプリの負荷後

は、その後、私はこのエラーを得た:
LoginPage.xaml.cs

にログイン方法で

MessagingCenter.Send<object>(this, App.EVENT_LAUNCH_MAIN_PAGE); 

Unhandled Exception: 

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. 

指し

PS:私はバックボタン(ハードウェアボタン)をヒットしない場合は、コードがうまく機能

ここではコードです:

App.xaml.cs 
public partial class App : Application 
{ 
    public static string EVENT_LAUNCH_LOGIN_PAGE = "EVENT_LAUNCH_LOGIN_PAGE"; 
    public static string EVENT_LAUNCH_MAIN_PAGE = "EVENT_LAUNCH_MAIN_PAGE"; 

    public App() 
    { 
     InitializeComponent(); 

     MainPage = new App3.LoginPage(); 

     MessagingCenter.Subscribe<object>(this, EVENT_LAUNCH_LOGIN_PAGE, SetLoginPageAsRootPage); 
     MessagingCenter.Subscribe<object>(this, EVENT_LAUNCH_MAIN_PAGE, SetMainPageAsRootPage); 
    } 

    private void SetLoginPageAsRootPage(object sender) 
    { 
     MainPage = new NavigationPage(new LoginPage()); 
    } 

    private void SetMainPageAsRootPage(object sender) 
    { 
     MainPage = new NavigationPage(new App3.MainPage()); 
    } 

    protected override void OnStart() 
    { 
     // Handle when your app starts 
    } 

    protected override void OnSleep() 
    { 
     // Handle when your app sleeps 
    } 

    protected override void OnResume() 
    { 
     // Handle when your app resumes 
    } 
} 

LoginPage.xaml.cs 
[XamlCompilation(XamlCompilationOptions.Compile)] 
public partial class LoginPage : ContentPage 
{ 
    public Command LoginCommand { get; } 

    public LoginPage() 
    { 
     InitializeComponent(); 

     LoginCommand = new Command(() => Login()); 

     Button btn = new Button { Text = "Login", Command = LoginCommand }; 

     Content = new StackLayout 
     { 
      Children = 
      { 
       btn 
      } 
     }; 
    } 

    public void Login() 
    { 
     MessagingCenter.Send<object>(this, App.EVENT_LAUNCH_MAIN_PAGE); 
    } 
} 

MainPage.xaml.cs 
public partial class MainPage : ContentPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 

     ToolbarItems.Add(new ToolbarItem("Logout", "",() => Logout())); 
    } 

    public void Logout() 
    { 
     MessagingCenter.Send<object>(this, App.EVENT_LAUNCH_LOGIN_PAGE); 
    } 
} 
+0

Xamarinのバグです。 https://bugzilla.xamarin.com/show_bug.cgi?id=46494 –

答えて

0

Xamarin.Formsバージョン2.3.3.175のバグでした。このバグを修正するには、以前のバージョンのXamarin.Formsをインストールします。私のアプリはバージョン2.3.0.107で動作します。

バージョン2.3.3.175のバグは、バージョン2.3.4-pre1で修正する必要があります。

+0

前と同じXamarin.Forms '2.3.0.107'、最新の安定版、最新のプレリリース版を試しました。すべての私にエラーを与えた。 「活動が破壊された」 – paulharley421

関連する問題