Android 爱奥尼亚3选项卡硬件后退按钮赢得';t出口

Android 爱奥尼亚3选项卡硬件后退按钮赢得';t出口,android,cordova,ionic-framework,ionic3,Android,Cordova,Ionic Framework,Ionic3,我有一个离子3应用程序的基础上。我已将根页面设置为以下内容: <ion-tabs> <ion-tab [root]="tab1Root" [tabTitle]="tab1Title" tabIcon="bonfire"></ion-tab> <ion-tab [root]="tab2Root" [tabTitle]="tab2Title" tabIcon="search"></ion-tab> <ion-t

我有一个离子3应用程序的基础上。我已将根页面设置为以下内容:

<ion-tabs>
    <ion-tab [root]="tab1Root" [tabTitle]="tab1Title" tabIcon="bonfire"></ion-tab>
    <ion-tab [root]="tab2Root" [tabTitle]="tab2Title" tabIcon="search"></ion-tab>
    <ion-tab [root]="tab3Root" [tabTitle]="tab3Title" tabIcon="cog"></ion-tab>
</ion-tabs>

当我按下这个页面上的硬件后退按钮时,什么也没有发生。但是,当我将内容更改为其他内容时,例如:

<p>Hello</p>
你好

然后硬件后退按钮退出,如我所愿


如何使“硬件后退”按钮在选项卡式页面上正确工作,同时保留其他页面上的工作默认行为?

在选项卡页面中,尝试添加
IONVIEWDIENTER
,并尝试按如下方式附加以下类:

ionViewDidEnter() {
                   this.platform.registerBackButtonAction(() => {
                        this.platform.exitApp();
                   });
             }

在选项卡页面中,尝试添加
IONVIEWDIENTER
,并尝试附加以下类,如下所示:

ionViewDidEnter() {
                   this.platform.registerBackButtonAction(() => {
                        this.platform.exitApp();
                   });
             }

将代码写入构造函数()中,您可以从该页离开

Home.ts

 constructor(
    public navCtrl: NavController,
    private platform: Platform) {
    this.platform.registerBackButtonAction(()=>{
      this.platform.exitApp();
    });
  }

将代码写入构造函数()中,您可以从该页离开

Home.ts

 constructor(
    public navCtrl: NavController,
    private platform: Platform) {
    this.platform.registerBackButtonAction(()=>{
      this.platform.exitApp();
    });
  }

app.component.ts
文件中

import { Nav, App } from 'ionic-angular';

export class MyApp {
@ViewChild(Nav) nav: Nav;
然后

         platform.registerBackButtonAction(() => {
           let nav = app.getActiveNav();
           let activeView: ViewController = nav.getActive();

           if(activeView != null){
             if(nav.canGoBack()) {

               nav.pop();
             }else if (typeof activeView.instance.backButtonAction === 'function')
             {
               activeView.instance.backButtonAction();
             }
             else {

               nav.parent.select(0); // goes to the first tab
             }
           }
         });
希望这对你有帮助,也别忘了把它放在平台里面

在需要关闭应用程序的响应ts文件中编写函数

backButtonAction(){
  this.platfrom.exitApp();
}

app.component.ts
文件中

import { Nav, App } from 'ionic-angular';

export class MyApp {
@ViewChild(Nav) nav: Nav;
然后

         platform.registerBackButtonAction(() => {
           let nav = app.getActiveNav();
           let activeView: ViewController = nav.getActive();

           if(activeView != null){
             if(nav.canGoBack()) {

               nav.pop();
             }else if (typeof activeView.instance.backButtonAction === 'function')
             {
               activeView.instance.backButtonAction();
             }
             else {

               nav.parent.select(0); // goes to the first tab
             }
           }
         });
希望这对你有帮助,也别忘了把它放在平台里面

在需要关闭应用程序的响应ts文件中编写函数

backButtonAction(){
  this.platfrom.exitApp();
}

我最终需要在app.container.ts中执行此操作,以获得所需的行为:

platform.registerBackButtonAction(() => {
    let nav = app.getActiveNav();
    let activeView = nav.getActive();
    if (activeView != null){
        if (nav.canGoBack()) {
           nav.pop();
        } else if (nav.parent.getSelected() != nav.parent.getByIndex(0)) {
            // goes to the first tab
            nav.parent.select(0);
        } else {
            platform.exitApp();
        }
     }
}); 

我最终需要在app.container.ts中执行此操作,以获得所需的行为:

platform.registerBackButtonAction(() => {
    let nav = app.getActiveNav();
    let activeView = nav.getActive();
    if (activeView != null){
        if (nav.canGoBack()) {
           nav.pop();
        } else if (nav.parent.getSelected() != nav.parent.getByIndex(0)) {
            // goes to the first tab
            nav.parent.select(0);
        } else {
            platform.exitApp();
        }
     }
}); 

标签的默认行为(任何标签页)一旦堆栈为空,它将关闭,而不会移动到上一个标签页tabs@MohanGopi我的问题是,一旦堆栈为空,它就永远不会关闭。一旦我进入选项卡页面,“后退”按钮将不起任何作用。请对所有已注册的后退按钮操作进行注释,然后重试,您将获得默认值behaviour@MohanGopi没有。我在整个项目中搜索了
registerBackButtonAction
,但没有找到任何结果。那么肯定存在其他问题,为什么不尝试创建一个新的tabs项目,并将其安装到设备中,然后进行检查,以便您了解后退按钮操作的区别使用此命令创建项目
ionic startmyApp选项卡
并将其部署到设备中选项卡的默认行为(任何选项卡页面)一旦堆栈为空,它将关闭,而不会移动到上一个选项卡tabs@MohanGopi我的问题是,一旦堆栈为空,它就永远不会关闭。一旦我进入选项卡页面,“后退”按钮将不起任何作用。请对所有已注册的后退按钮操作进行注释,然后重试,您将获得默认值behaviour@MohanGopi没有。我在整个项目中搜索了
registerBackButtonAction
,但没有找到任何结果。那么肯定存在其他问题,为什么不尝试创建一个新的tabs项目,并将其安装到设备中,然后进行检查,以便您了解后退按钮操作的区别使用此命令创建项目
ionic startmyApp选项卡
并将其部署到设备中这有助于我到达需要的位置,但它仍然没有真正退出应用程序。查看我的答案,了解我是如何做到这一点的。为了退出应用程序,只需在主页中编写名为backButtonAction()的函数并检查它,它将退出应用程序。这有助于我达到需要的位置,但它仍然没有真正退出应用程序。查看我的答案,了解我是如何完成的。为了退出应用程序,只需在主页中使用命名为backButtonAction()的函数编写函数,然后查看它,它将退出应用程序