全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ionic2如何处理android硬件返回按钮

问题

注册安卓硬件返回按钮事件是必须的,因为用户不小心点击了返回按钮就退出app体验很不好,所以有几种方法:

1.实现按返回键最小化应用(最小化应用需要装cordova-plugin-appminimize插件,使用window['AppMinimize'].minimize();)。
2.要么请求用户确认(添加一个Confirmation Alerts)。
3.按一下提示,按两下退出(加一个方法用toast提醒)。

这里用第三种展示。

解决

在app.html中,添加#myNav,在app.component.ts文件通过@ViewChild('myNav')获取:

<ion-nav #myNav [root]="rootPage"></ion-nav>

在app.component.ts中:

 import {Component, ViewChild} from '@angular/core';
 import {Platform, ToastController, Nav, IonicApp} 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('myNav') nav: Nav;

  constructor(public ionicApp: IonicApp, public platform: Platform, public toastCtrl: ToastController) {
   platform.ready().then(() => {
    StatusBar.styleDefault();
    Splashscreen.hide();
    this.registerBackButtonAction();//注册返回按键事件
   });
  }

  registerBackButtonAction() {
   this.platform.registerBackButtonAction(() => {
    //如果想点击返回按钮隐藏toast或loading或Overlay就把下面加上
    // this.ionicApp._toastPortal.getActive() || this.ionicApp._loadingPortal.getActive() || this.ionicApp._overlayPortal.getActive()
    let activePortal = this.ionicApp._modalPortal.getActive();
    if (activePortal) {
     activePortal.dismiss().catch(() => {});
     activePortal.onDidDismiss(() => {});
     return;
    }
    let activeVC = this.nav.getActive();
    let tabs = activeVC.instance.tabs;
    let activeNav = tabs.getSelected();
    return activeNav.canGoBack() ? activeNav.pop() : this.showExit();//另外两种方法在这里将this.showExit()改为其他两种的方法的逻辑就好。
   }, 1);
  }

  //双击退出提示框
  showExit() {
   if (this.backButtonPressed) { //当触发标志为true时,即2秒内双击返回按键则退出APP
    this.platform.exitApp();
   } else {
    this.toastCtrl.create({
     message: '再按一次退出应用',
     duration: 2000,
     position: 'top'
    }).present();
    this.backButtonPressed = true;
    setTimeout(() => this.backButtonPressed = false, 2000);//2秒内没有再次点击返回则将触发标志标记为false
   }
  }
}

在tabs.html中,添加#mainTabs,在tabs.ts文件通过@ViewChild('mainTabs') tabs:Tabs;获取:

 <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>

在tabs.ts中:

 import {Component, ViewChild} from '@angular/core';
 import { HomePage } from '../home/home';
 import { AboutPage } from '../about/about';
 import { ContactPage } from '../contact/contact';
 import {Tabs} from "ionic-angular";

 @Component({
  templateUrl: 'tabs.html'
 })
 export class TabsPage {
  @ViewChild('mainTabs') tabs:Tabs;//加这句以及引用两个模块
  tab1Root: any = HomePage;
  tab2Root: any = AboutPage;
  tab3Root: any = ContactPage;

  constructor() {
  }
 }

完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ionic2  # android  # 返回按钮  # Android 滑动返回Activity的实现代码  # Android 实现按两次返回键退出程序(两种方法)  # Android onKeyDown监听返回键无效的解决办法  # Android悬浮球及全局返回功能的实现示例  # Android标题栏中添加返回按钮功能  # Android悬浮按钮点击返回顶部FloatingActionButton  # Android 自定义返回按钮的实例详解  # 两种  # 双击  # 在这里  # 就好  # 就把  # 这句  # 两下  # 很不好  # 大家多多  # 再按  # 则将  # 第三种  # 几种方法  # core  # angular  # Component  # ToastController  # Platform  # class  # pre 


相关文章: 如何快速配置高效服务器建站软件?  Android自定义控件实现温度旋转按钮效果  如何在IIS中配置站点IP、端口及主机头?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  外贸公司网站制作哪家好,maersk船公司官网?  建站上传速度慢?如何优化加速网站加载效率?  建站之星2.7模板:企业网站建设与h5定制设计专题  ,怎么在广州志愿者网站注册?  建站之星如何助力网站排名飙升?揭秘高效技巧  建站之星后台密码遗忘?如何快速找回?  如何在阿里云通过域名搭建网站?  ,如何利用word制作宣传手册?  如何用PHP工具快速搭建高效网站?  网站制作免费,什么网站能看正片电影?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  高防服务器:AI智能防御DDoS攻击与数据安全保障  香港服务器如何优化才能显著提升网站加载速度?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  教学论文网站制作软件有哪些,写论文用什么软件 ?  建站之家VIP精选网站模板与SEO优化教程整合指南  制作宣传网站的软件,小红书可以宣传网站吗?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Python lxml的etree和ElementTree有什么区别  如何用花生壳三步快速搭建专属网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何通过多用户协作模板快速搭建高效企业网站?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  ,南京靠谱的征婚网站?  官网网站制作腾讯审核要多久,联想路由器newifi官网  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  C#如何使用XPathNavigator高效查询XML  建站之星如何快速生成多端适配网站?  c# 在ASP.NET Core中管理和取消后台任务  建站之星安装需要哪些步骤及注意事项?  定制建站是什么?如何实现个性化需求?  如何将凡科建站内容保存为本地文件?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  建站之星免费模板:自助建站系统与智能响应式一键生成  制作网页的网站有哪些,电脑上怎么做网页?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  网站制作价目表怎么做,珍爱网婚介费用多少?  TestNG的testng.xml配置文件怎么写  在线制作视频的网站有哪些,电脑如何制作视频短片?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  网站企业制作流程,用什么语言做企业网站比较好?  家庭建站与云服务器建站,如何选择更优? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。