【问题标题】:Xamarin.Forms 4: ContentPage's OnBackButtonPressed not calledXamarin.Forms 4:未调用 ContentPage 的 OnBackButtonPressed
【发布时间】:2020-03-11 18:33:29
【问题描述】:

我试图从我的 Xamarin.Forms 4 ContentPage 覆盖OnBackButtonPressed 如下

protected override bool OnBackButtonPressed()
{
    return base.OnBackButtonPressed();
}

但是当按下硬件按钮时,我的 Android 设备永远不会调用此代码。我已经成功地覆盖了这样的软件备份按钮:

<Shell.BackButtonBehavior>
    <BackButtonBehavior Command="{Binding BackCommand}" IconOverride="Back.png" />
</Shell.BackButtonBehavior>

但是我可以被要求使用硬件按钮。在主要活动中,我可以在

中设置断点
public override void OnBackPressed()
{
    base.OnBackPressed();
}

但不在ContentPage 中。 有什么想法吗?

【问题讨论】:

  • ,我在我身边测试,它工作正常,Mainactivity 中的 OnBackPressed 和 contentpage 中的 OnBackButtonPressed 被触发,那么 Xamarin.forms 版本是什么,你能在这里发布一个可以重现你的问题的简单方法吗?

标签: xamarin.forms


【解决方案1】:

在 ContentPage 中没有收到 BackButtonPressed 事件的原因是 Shell 导航。因此,您实际上将在外壳中接收 BackButtonPressed 的事件。因此,在您的 Shell 课程中,您将执行类似

的操作
public class AppShell: Shell
{
.
.
 public override void OnBackButtonPressed ()
 {
    base.OnBackButtonPressed ();
 }

如有疑问请随时回复

【讨论】:

  • 感谢您的信息。在我的 shell 类中,我没有对 OnBackPressed 的覆盖。公共部分类 AppShell:Xamarin.Forms.Shell。我使用 xamarin 形式 4.3
  • 我认为这应该可用,您能快速重新检查一下吗?