所以我使用这个函数来处理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 上我有 navigation(['/parameters]) ,在 page2.ts 上我有 console.log("test") 。问题是我在应用程序中的任何位置,按后退按钮总是会执行导航(['/parameters]),如果我在正确的页面上,也会执行 console.log,但它应该执行 console.logonly。
它似乎是全局的,知道如何覆盖 ActivityBackPressedEvent 吗?
activityBackPressedEvent
不是特定于页面的,它对于包含所有页面的活动来说是全局的。通常,您不会向该事件添加多个事件侦听器。
您可以执行类似下面的操作来在页面级别处理此问题,可能在应用程序模块/中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']);
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)