Android上的Xamarin后退按钮需要两次点击才能向后导航

qyzbxkaa  于 2022-12-31  发布在  Android
关注(0)|答案(1)|浏览(218)

在Xamarin Android上,我在App.cs中将MainPage属性设置为NavigationPage,指向我的MainPage.xaml页面,这是一个ContentPage。
从MainPage.xaml中的按钮执行的命令中,我等待对Navigation.PageAsync的调用以转到我的LoginPage.xaml,也是一个ContentPage。
如果我选择不登录,并希望回到MainPage.xaml页面从一些未知的原因在这一点上,我已经接近航运它已经决定,现在它需要两次点击Android硬件后退按钮,使这种情况发生。这是不是今天早些时候的情况,看起来好像Xamarin编译有什么地方出了问题,因为我所做的唯一更改是在ResourceDictionary中添加一些额外的颜色。这几个月都很好用。
顺便说一句,我已经检查了NavigationStack,它是正确的MainPage和LoginPage(不是两个LoginPage示例)。我还注意到RemovePage也不再工作了,关键是如果我登录,那么我会删除LoginPage,这样你就不会从下一页返回到它。
在试图找到原因时,我在Android项目中覆盖了OnBackButton,果然,第一次点击没有调用它,只有第二次才调用。我不知道如何解决这个问题,我的项目几乎准备好发布了,突然就这样了。我试着删除obj和bin文件夹并重新编译,调试和发布,仍然是一样的。现在模拟器和物理设备上都是这样。
有没有人知道从哪里开始寻找如何解决这个问题,或者更好地有一个解决方案?

qlfbtfca

qlfbtfca1#

所以我终于想通了,这并不漂亮。我只添加颜色是错误的,我还从一个页面移走了一个在TargetType条目上工作的样式到AppIdeXaml中。理论上这不应该有什么不同,它将只是按照放置在App.xaml级别的任何其他资源合并到所有页面ResourceDictionary中。我有两个网页,有完全相同的风格,所以我巩固了他们的根。
但这里有个问题。两次按下后退按钮是由一个setter属性引起的,这个属性只有在App.xaml中才存在。我已经将CursorPosition设置为0。这个无害的setter导致后退按钮不触发,没有抛出异常,只是它有这个效果。希望这对大家有所帮助。
注:我已经转移到MAUI(确实做了一个完整的端口),但有这么多的问题,有关图像和崩溃和性能在这个时候是不可能的,所以坚持与Xamarin现在,fying锅或火。

相关问题