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);
}
}
Xamarinのバグです。 https://bugzilla.xamarin.com/show_bug.cgi?id=46494 –