Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递页面ID时返回按钮上的Shell路由问题_C#_Xamarin_Xamarin.forms_Xamarin.forms.shell - Fatal编程技术网

C# 传递页面ID时返回按钮上的Shell路由问题

C# 传递页面ID时返回按钮上的Shell路由问题,c#,xamarin,xamarin.forms,xamarin.forms.shell,C#,Xamarin,Xamarin.forms,Xamarin.forms.shell,我只在Android上收到以下错误(在iOS上可以) Shell:返回导航失败:System.ArgumentException:与:://D_FAULT\u FlyoutItem12/IMPL_homepage/homepage/indexpage/indexpage匹配的不明确路由 我在AppShell中这样声明页面 Routing.RegisterRoute("indexpage", typeof(Pages.Index)); 因为页面的内容是动态的,所以我像这样导航

我只在Android上收到以下错误(在iOS上可以)

Shell:返回导航失败:System.ArgumentException:与:://D_FAULT\u 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运行正常,或者任何将面临这个问题的人,并且也有这个错误消息

 System.ArgumentException: 'Ambiguous routes matched for: ...'
当您在XAML(appshell文件)中注册路由,并尝试在C#中的代码隐藏中注册路由时,就会发生这种情况。只能使用XAML或C#注册一次路由,而不能同时使用两者

要修复错误,请执行以下操作:很可能您有一个页面寄存器2次。。。AppShell.xaml.cs文件中的第一次寄存器和AppShell.xaml文件中的第二次寄存器


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

最后一段的描述不清楚,你能通过重新编制并包含AppShell.xaml和AppShell.xaml.cs中关于页面结构/层次结构和路由定义的代码来澄清吗?@Cfun我以为我已经完成了?上面的路由代码来自AppShell.xaml.cs,而GoToAsync来自稍后的页面,该页面使用注册的引用转到页面模板并使用ID加载内容。我想知道问题是否与“链接”这些事件有关?因为“后退”按钮在两种平台上都能很好地从列表页面进行indexpage操作,但是当使用该ID进入另一个页面时,错误会显示出来。这意味着一个最小的相关代码(不是一行,也不是一本书)会比描述代码更清楚地说明问题。这就是我的答案。我在代码隐藏和xaml中注册,但没有注册。谢谢