Ionic2双击退出应用
来源:互联网 发布:百成玻璃优化排版软件 编辑:程序博客网 时间:2024/06/06 03:45
在Ionic2项目结构解析中,我们知道在 src/app/app.component.ts 初始化项目,因此我们可以在这里监听Android返回按键,实现双击退出应用。
Ionic2 Platform中提供了监听返回按键的API registerBackButtonAction(callback, priority),
注册返回按键事件
修改src/app/app.component.ts如下:
import { Component, ViewChild } from '@angular/core';import { Platform, ToastController, Nav } from 'ionic-angular';import { StatusBar, Splashscreen } from 'ionic-native';import { TabsPage } from '../pages/tabs/tabs';@Component({ templateUrl: 'app.html'})export class MyApp { rootPage = TabsPage; backButtonPressed: boolean = false; //用于判断返回键是否触发 @ViewChild(Nav) nav: Nav; constructor(public platform: Platform, public toastCtrl: ToastController) { this.initializeApp(); } initializeApp() { this.platform.ready().then(() => { StatusBar.styleDefault(); Splashscreen.hide(); //注册返回按键事件 this.platform.registerBackButtonAction((): any => { let activeVC = this.nav.getActive(); let page = activeVC.instance; if (!(page instanceof TabsPage)) { if (!this.nav.canGoBack()) { //当前页面为tabs,退出APP return this.showExit(); } //当前页面为tabs的子页面,正常返回 return this.nav.pop(); } let tabs = page.tabs; let activeNav = tabs.getSelected(); if (!activeNav.canGoBack()) { //当前页面为tab栏,退出APP return this.showExit(); } //当前页面为tab栏的子页面,正常返回 return activeNav.pop(); }, 101); }); } //双击退出提示框,这里使用Ionic2的ToastController showExit() { if (this.backButtonPressed) this.platform.exitApp(); //当触发标志为true时,即2秒内双击返回按键则退出APP else { let toast = this.toastCtrl.create({ message: '再按一次退出应用', duration: 2000, position: 'bottom' }); toast.present(); this.backButtonPressed = true; //2秒内没有再次点击返回则将触发标志标记为false setTimeout(() => { this.backButtonPressed = false; }, 2000) } }}
修改 src/pages/tabs/tabs.html
<ion-tabs #mainTabs> <ion-tab [root]="tab1Root" tabTitle="Home" tabIcon="home"></ion-tab> <ion-tab [root]="tab2Root" tabTitle="About" tabIcon="information-circle"></ion-tab> <ion-tab [root]="tab3Root" tabTitle="Contact" tabIcon="contacts"></ion-tab></ion-tabs>
修改 src/pages/tabs/tabs.ts
import { Component,ViewChild } from '@angular/core';import { Tabs } from 'ionic-angular';import { HomePage } from '../home/home';import { AboutPage } from '../about/about';import { ContactPage } from '../contact/contact';@Component({ templateUrl: 'tabs.html'})export class TabsPage { @ViewChild('mainTabs') tabs:Tabs; //根据html中的'#mainTabs'获取Tabs实例 tab1Root: any = HomePage; tab2Root: any = AboutPage; tab3Root: any = ContactPage; constructor() { }}
转自https://dpary.github.io/2016/12/19/
方案2(若前面方法不可用使用该方法)
import {App} from ‘ionic-angular’
this.platform.registerBackButtonAction(() => { const overlay = this.app._appRoot._overlayPortal.getActive(); const nav = this.app.getActiveNav(); if (overlay && overlay.dismiss) { overlay.dismiss(); } else if (nav.canGoBack()) { nav.pop(); } else { this.platform.exitApp(); } }, 101)
0 0
- Ionic2双击退出应用
- ionic2.0双击返回键退出应用
- 双击回退键退出应用
- 双击回退键退出应用
- android 双击退出应用
- 双击退出应用
- 双击退出整个应用
- 双击返回,退出应用。
- Android 双击退出应用
- Android 双击退出应用
- 双击返回键退出应用
- 双击返回键退出应用
- 双击返回键退出应用
- 双击返回键退出应用
- 双击返回键退出应用
- Android实现双击退出应用
- AppCan 双击返回按钮退出应用
- Android项目中的双击退出应用
- C#中使用@替代使用转意字符
- 闲言碎语录
- hbase的java操作
- uboot代码分析
- Collections类方法详解
- Ionic2双击退出应用
- VS调试C程序跳转至_debugger_hook_dummy = 0;
- Android Studio 新建编译 Java 工程
- 模拟点击事件动态增删元素
- poj 2109
- 操作系统原理:链接与ELF文件
- 1045. 快速排序(25)
- 概率图模型学习(3)——马尔科夫网表示1
- 用Python处理"大"XLS文件