nativescript - Nativescript - Android TabView 后退按钮自定义导航
问题描述
在 Nativescript 应用程序中,当用户单击材料/软后退按钮时,我需要为 Android 实现自定义导航场景。
为简单起见,从登录标签模板(https://github.com/ADjenkov/login-tabs-ng)开始,我想实现一个导航,如 Instagram、Facebook、WhatsApp、Pinterest 等等......
这是登录选项卡模板的示例,当我从“球员”选项卡导航到“团队”选项卡,然后点击返回按钮时,我想返回“球员”选项卡(在我留在此选项卡中的页面上)。
今天,由于 Teams 选项卡出口的导航历史记录为空,而根出口的导航历史记录为空,应用程序已关闭。如果我在返回“球员”选项卡后点击后退按钮并且“球员”选项卡的导航历史记录为空,我希望它关闭。
我希望它很清楚,如果不是这样,请告诉我。有没有办法实现这种行为?
解决方案
最后,我实施了一个受@Manoj 响应启发的解决方案。
我听activityBackPressed event
并设置args.cancel = true
以防止默认行为。
在每次选项卡更改时,我都会保存以前访问过的选项卡。然后在每次activityBackPressed event
我检查当前插座是否可以返回this.routerExtension.canGoBack({ outlets: [this.tabVisibleName], relativeTo: this.activeRoute })
。
如果不是,如果访问的选项卡列表不为空,我会以编程方式返回上一个选项卡。如果访问的选项卡列表为空,我设置args.cancel = false
为退出应用程序。
如果this.routerExtension.canGoBack({ outlets: [this.tabVisibleName], relativeTo: this.activeRoute })
返回 true,我只需返回:this.routerExtension.back({ outlets: [this.tabVisibleName], relativeTo: this.activeRoute });
注意:当应用程序进入后台时,您必须删除监听器,否则您将有多个监听器(一个通过恢复):
application.on(application.exitEvent, (args) => {
if (args.android) {
application.android.off(application.AndroidApplication.activityBackPressedEvent);
}
});
谢谢你的帮助
推荐阅读
- javascript - 如何在javascript中扁平化对象值
- javascript - React-Router open 新选项卡内容中的链接正在同一个现有选项卡中打开
- python - python通过递归函数获取所有子集
- phpstorm - 如何在 PhpStorm 中设置默认 PHP 版本/解释器?
- arrays - 是否可以在 2 个 for 循环中存储数据
- kotlin - Kotlin 空检查 !! 不短路评价?
- c# - 如何在 C# 中通过 MathNet 查找函数的值
- api - 在 Magento 中,我可以仅在 Magento REST API 上构建我的店面吗?
- asp.net - 如何在 web.config 中使用 appsettings 变量在 web.config 中再次使用
- javascript - 尝试访问对象属性时一直未定义