【问题标题】:Xamarin.Forms: Press back button from codeXamarin.Forms:从代码中按下后退按钮
【发布时间】:2017-11-24 11:47:44
【问题描述】:

Xamarin.Forms 中是否有一种方法可以从代码中按下后退按钮?我试图调用 OnBackButtonPressed 和 SendBackButtonPressed 但这不起作用。调用了 OnBackButtonPressed 事件,但没有执行返回操作。

调用 OnBackButtonPressed:

if (_currentQuestionnaireGroup != null)
   await RefreshDataAsync();
else
{
   App.QuestionnaireOverviewPage.IsDirty = true;
   this.OnBackButtonPressed();
}

事件:

protected override bool OnBackButtonPressed()
{
    if (_questionnaireHandler != null)
        App.QuestionnaireOverviewPage.IsDirty = true;

    return true;
}

【问题讨论】:

    标签: c# .net xamarin xamarin.forms cross-platform


    【解决方案1】:

    对不起英语不好

    在您的活动中,将return true; 更改为return base.OnBackButtonPressed();

    当您返回 true 时,设备上的“返回”操作将被取消。

    【讨论】:

    • 这并不能解决问题。当我按下 android 上的硬件后退按钮时,您的解决方案有效。但我有一个自定义的后退按钮。当我单击此自定义按钮并仅调用 OnBackButtonPressed 时,不会执行后退操作。两者都点击了 OnBackButtonPressed - 事件,但只有硬件后退按钮执行真正的后退操作。
    • 如果我理解正确的话,我曾经使用 Navigation.PopAsync() 来执行此操作。你可以发布你的整个代码吗?我会尝试在这里模拟你的场景并获得诀窍。
    • 是的,使用 Navigation.PopAsync() 是正确的方法并解决了问题。我在原生 android 开发方面有一些经验,在那里你可以调用 finish() 或 onBackPressed() 来关闭当前页面。在 Xamarin.Forms 中,您必须调用 Navigation.PopAsync()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2015-11-16
    • 2014-03-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多