首页 > 解决方案 > 传递页面 ID 时后退按钮上的外壳路由问题

问题描述

我仅在 Android 上收到以下错误(在 iOS 上很好)

外壳:无法向后导航:System.ArgumentException:匹配的不明确路由://D_FAULT_FlyoutItem12/IMPL_homepage/homepage/indexpage/indexpage

我在 AppShell 中这样声明页面

Routing.RegisterRoute("indexpage", typeof(Pages.Index));

因为页面的内容是动态的,所以我像这样导航到它

await Shell.Current.GoToAsync($"indexpage?indexid={clicked.ID}");

从列表转到索引页面时,这可以正常工作

但是,当我到达索引页面然后转到另一个不同类型的页面时,也是通过在 AppShell 中注册的路由,但再次通过传入一个 ID,然后尝试返回,我得到了错误

同样,该错误仅发生在 Android 上 - iOS 工作正常

标签: c#xamarinxamarin.formsxamarin.forms.shell

解决方案


或任何将面临此问题并且也有此错误消息的人;

 System.ArgumentException: 'Ambiguous routes matched for: ...'

当您在 XAML 中(在 appshell 文件中)注册您的路由并且您还尝试在 C# 中的代码中注册您的路由时,会发生这种情况。仅使用 XAML 或 C# 注册一次路由,而不是同时使用两者。

修复您的错误:很可能您有 2 次页面注册...第一次在 AppShell.xaml.cs 文件中注册,第二次在 AppShell.xaml 中注册。

只需删除双寄存器,它应该可以工作。祝你好运


推荐阅读