gpt4 book ai didi

c# - MessagingCenter.Send 上的 System.Reflection.TargetInvocationException

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:54 31 4
gpt4 key购买 nike

我正在尝试使用 MessagingCenter 构建简单的导航但我收到 System.Reflection.TargetInvocationException当我按下后退按钮(硬件按钮)时。

这是我得到错误的方法;

应用加载后,
我按下后退按钮(硬件按钮)
然后应用程序最小化后,我在最近的应用程序中打开它
之后,我单击“登录”,然后出现此错误:

Unhandled Exception:

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

指向

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

在 LoginPage.xaml.cs 的登录方法中

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.Forms 版本 2.3.3.175 中的错误。若要修复此错误,请安装早期版本的 Xamarin.Forms。我的应用程序运行版本为 2.3.0.107。

2.3.3.175版本的bug应该在2.3.4-pre1版本中修复

关于c# - MessagingCenter.Send 上的 System.Reflection.TargetInvocationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45991938/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com