gpt4 book ai didi

Nativescript 角度 : handle android back button on different pages

转载 作者:行者123 更新时间:2023-12-04 05:15:45 25 4
gpt4 key购买 nike

所以我用这个函数来处理android后退按钮:

this._page.on(Page.loadedEvent, event => {
if (application.android) {
application.android.on(application.AndroidApplication.activityBackPressedEvent, (args:AndroidActivityBackPressedEventData) => {
args.cancel = true;
this._ngZone.run(() => {
this.router.navigate(['/parameters']);
});
});
}
})

在不同的页面上(角度组件)。所以在 page1.ts 我有 navigate(['/parameters]) 和在 page2.ts 我有 console.log("test")。问题是我在应用程序中的任何位置,按下后退按钮总是导航(['/parameters]),如果我在正确的页面上,还有console.log,但它应该做console.log 仅限 .
它似乎是全局性的,知道如何覆盖 activityBackPressedEvent 吗?

最佳答案

activityBackPressedEvent不是特定于页面的,它对您的包含所有页面的 Activity 是全局的。通常,您不会向该事件添加多个事件监听器。

您可以在页面级别执行以下操作来处理此问题,可能在 app 模块/main.ts

application.android.on(application.AndroidApplication.activityBackPressedEvent,
(args: application.AndroidActivityBackPressedEventData) => {
const page = frame.topmost().currentPage;
if (page.hasListeners(application.AndroidApplication.activityBackPressedEvent)) {
args.cancel = true;
page.notify({
eventName: application.AndroidApplication.activityBackPressedEvent,
object: page
});
}
});

使用上面的代码, activityBackPressedEvent将在每个具有监听器的页面上触发。

现在在您想要自定义执行此操作的行为的页面/组件中,
// Inject Page
constructor(private page: Page) {
this.page.on(application.AndroidApplication.activityBackPressedEvent, this.onBackButtonTap, this);
}

onBackButtonTap(data: EventData) {
this._ngZone.run(() => {
this.router.navigate(['/parameters']);
});
}

关于Nativescript 角度 : handle android back button on different pages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55297104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com