【问题标题】:Xamarin Shell - Hardware backbuttonXamarin Shell - 硬件后退按钮
【发布时间】:2021-04-29 15:56:37
【问题描述】:

我正在 Android 9 上测试 https://github.com/xamarin/xamarin-forms-samples/tree/master/UserInterface/Xaminals 应用程序。

我想知道为什么硬件后退按钮不能按预期工作(返回上一个视图)

例子:

  1. 启动应用程序 2- 进入狗标签
  2. 按下硬件返回按钮
  3. 应用程序已暂停。你应该回到猫名单。

示例 2:

  1. 启动应用程序
  2. 进入侧边菜单,进入猴子。
  3. 按下硬件返回按钮
  4. 应用程序已暂停。你应该回到猫名单。

我不明白为什么硬件按钮只能正常工作,例如当我输入猫的详细信息然后返回时。

【问题讨论】:

    标签: xamarin xamarin.forms xamarin.android


    【解决方案1】:

    默认情况下,Android 硬件后退按钮关闭当前打开的活动并激活导航堆栈中的活动。如果要覆盖此行为,则需要处理后退按钮按下并实现用例所需的导航。 Shell 使用BackButtonBehavior 属性实现了这个方便的功能:

    https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/navigation#back-button-behavior

    【讨论】:

    • 令人沮丧的是,这不是默认行为。其余的应用程序,例如:Whatapp 允许您在更改选项卡时返回,Gmail 允许您在更改文件夹时返回上一个文件夹,所有应用程序在您浏览侧边菜单时也是如此返回上一个屏幕。我认为这是任何用户默认的期望。它应该保存整个应用程序导航堆栈,而不仅仅是在主详细信息中导航时。
    • 硬件后退按钮在 iOS 上没有(仅在 Android 上可用),而 Shell 是一个跨平台组件,需要兼顾两个平台,因此默认实现按原样工作。幸运的是,helper 属性允许您跳过深入研究本机代码并以跨平台方式激活所需的行为。
    【解决方案2】:

    我想知道为什么硬件后退按钮不能按预期工作(返回上一个视图) 我不明白为什么硬件按钮只能正常工作,例如当我输入猫的详细信息然后我回去吧。

    据我所知,当导航到 Shell 视觉层次结构中的路由时,不会创建导航堆栈。但是,当导航到不在 Shell 视觉层次结构中的页面时,会创建一个导航堆栈。

    这就是硬件后退按钮无法正常工作的方式。

    【讨论】:

    • 我不想覆盖这种行为。我希望它转到上一个屏幕。而且我不能让它转到上一个屏幕,因为在这种情况下导航堆栈没有保存在任何地方。
    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2017-01-26
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多