Xamarin 表单不一致“页面不得已有父级”崩溃

问题描述 投票:0回答:1

当在应用程序中快速单击导航按钮时,应用程序会崩溃,因为 Xamarin 会混淆要添加哪个页面并尝试推送或弹出到不存在的页面。通过识别 Xamarin 何时不知道将哪个页面添加到堆栈,并通过清除导航堆栈强制重置并从初始页面重新开始,已修复此错误。触发此重置后,然后尝试按导航按钮,程序有时会崩溃并收到“页面不得已有父级”错误。这种崩溃是不一致的,有时会在第一次重置后发生,有时需要 4 或 5 次重置才会发生,这使得调试变得困难。在重置发生之前它永远不会发生。

到目前为止已经尝试过:

  • 在整个程序中遵循导航堆栈,但这表现符合预期(即使在按钮单击崩溃重置之后)
  • 崩溃后查看导航堆栈中每个项目的父项(这些都是导航页面,似乎不会引起任何问题)
  • 验证代码永远不会将页面添加到已存在的导航堆栈中

已经没有想法了,已经这样做了 3 天,最让我困惑的是这不一致。

c# xamarin navigation parent
1个回答
0
投票

问题实际上是由重置方法引起的。页面根据配置文件存储在高速缓存中。重置应用程序时,这些页面不会被清除,这意味着当应用程序重置并返回主页时,它最终会导航到存储在缓存内存中的页面(如果该页面是导致第一次重置的页面)然后它会加载损坏的页面并使应用程序崩溃。重置应用程序时重置缓存已解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.