首页 > 解决方案 > 如何在 nativescript 6 中的后退按钮事件上导航到特定页面

问题描述

当我使用nativescript 5时,我编写了一些代码来捕获android上的后退按钮事件并且它工作正常,但是在升级到nativescript 6之后,奇怪的行为出现了:

1- 如果清除历史记录设置为 true,则应用导航到页面然后关闭。

2- 如果清除历史记录设置为 false,它会导航到该页面,然后导航回上一页。

这种行为的一个例子:

假设我希望应用程序在按下后退按钮时导航到页面 A,而我在页面 B 中,所以两个奇怪的行为是:

clearHistory: true应用程序导航到页面 A 并关闭。

clearHistory: false应用程序导航到 A 并返回到 B。

这是代码:

if (application.android) {
    application.android.on(application
        .AndroidApplication
        .activityBackPressedEvent, backEvent);
}

function backEvent(){
    console.log('pressed')
    const navigationEntry = {
        moduleName: 'views/mainPage/main-page',
        animated: true,
        clearHistory: false,
        transition: {
            name: "slideLeft",
            duration: 380,
            curve: "linear"
        }
    }
    frame.topmost().navigate(navigationEntry)
}

nativescript 6中有什么我想念的吗?

项目 github 仓库 在这里

标签: nativescript

解决方案


如果您想在后退按钮上导航,则必须首先通过将取消标志设置为 true 来取消后退导航。

function backEvent(args) {
    args.cancel = true;
    console.log('pressed')
    const navigationEntry = {
        moduleName: 'views/mainPage/main-page',
        animated: true,
        clearHistory: false,
        transition: {
            name: "slideLeft",
            duration: 380,
            curve: "linear"
        }
    }
    frame.topmost().navigate(navigationEntry)
}

推荐阅读