0

在 Android 5.1.1 (Lollipop) 设备上将 Xamarin.Forms 与 Prism.Forms (Unity) 结合使用时出现问题。

具体来说,如果我使用“动画:真”导航到/从表单,这些表单之后并不总是正常工作 - 具体来说,表单并不总是响应 PropertyChanged 事件而更新。这些表单在 Android 6.0 和 7.1(我唯一可用于测试的其他设备)上完美运行。

如果我将所有对 INavigationService.NavigateAsync 的调用更改为“动画”为假,那么只要我不使用硬件“后退”按钮退出表单(因为这会再次动画),这些表单就会正常运行。我什至创建了一个覆盖“UnityPageNavigationService”的覆盖,它覆盖了调用“DoPop”、“DoPush”和“GoBackAsync”时的“动画”参数(我很确定 NavigateAsync 方法最终会为所有要求调用其中之一,除了在更改 MasterDetailPage 的内容的情况下)。

我很确定这是一个 Xamarin 问题而不是 Prism 问题,因为查看了 GitHub 上的代码,在我看来 Prism INavigationService 实现最终会回到 Page.Navigation.PushAsync(...) 等方法而且我也很确定 Prism 导航服务没有拦截后退按钮并与之交互。

  • 当硬件后退按钮启动导航时,有什么方法可以禁用动画?

  • 有没有办法覆盖平台的 INavigation 实现(在这种情况下显然是 Android)?

  • Lollipop 5.1.1 上的 Xamarin Forms 是否存在已知问题和/或解决方法?

我正在使用 Xamarin Forms 2.3.4.231、Prism.Forms 6.3 和 Prism.Unity.Forms 6.3。

4

1 回答 1

0

我最终解决了这个问题,它与 Prism Navigation 或 Xamarin.Forms 无关,而是由 AndroidManifest.xml 的元素不是该元素的第一个子元素引起的。

我已经按字母顺序对元素的子元素进行了排序,制作了最后一个元素,这打破了它(尽管在更高版本的 Android 上没有)。

于 2017-06-02T11:34:57.737 回答