【问题标题】:Override Fragment functions on Xamarin Android if fragment is created using Forms Embedding如果 Fragment 是使用 Forms Embedding 创建的,则在 Xamarin Android 上覆盖 Fragment 函数
【发布时间】:2017-11-01 13:15:45
【问题描述】:

我在 Xamarin 中创建了一个表单页面,并使用 Xamarin Forms Embedding 将该页面用作片段。

var fragment = new FormsPage().CreateFragment(context);

我想覆盖 Android 版本应用程序中的 OnBackPressed() 控件。 最好的方法是什么,因为我无法在 Xamarin 表单页面中覆盖它。

【问题讨论】:

  • 为什么要覆盖OnBackPressed() 方法?

标签: xamarin xamarin.forms xamarin.android


【解决方案1】:

我想覆盖 Android 版本应用中的 OnBackPressed() 控件。

您可以在 Xamarin.Forms 中覆盖 OnBackButtonPressed,当在 Android 中按下硬件后退按钮时也会引发此事件,并且不会在 iOS 上引发此事件。

如果您想在OnBackPressed() 方法中从堆栈中删除片段,您可以在您的Activity 中重写此方法,如下所示:

public override void OnBackPressed()
{
    base.OnBackPressed();
    if (FragmentManager.BackStackEntryCount != 0)
    {
        FragmentManager.PopBackStack();
    }
    else
    {
        base.OnBackPressed();
    }
}    

【讨论】:

  • 沉.嗨,约克,这个解决方案有效。但我注意到我们完整的应用程序使用支持片段管理器来管理片段。截至目前,我无法将表单页面转换为支持片段。这就是为什么后退堆栈会导致一些问题,比如它没有在顶部显示后退按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多