如何在 phonegap 移动应用程序中同步 android 中的离子导航栏和硬件按钮

How to sync ionic navigation bar and hardware button in android in a phonegap mobile app

在我的 phonegap 应用程序中,有一个带后退按钮的离子导航栏。如果我们使用这个导航栏导航应用程序,它将正确导航到每个页面,但如果我们在某个时间点使用硬件后退按钮,导航就会变得混乱。有没有解决这个问题的方法。

<ion-view view-title="Store Locator" ng-controller="storelistCtrl" >
    <ion-nav-buttons side="right">
         <button form="searchId" class="button button-icon icon ion-ios7-search" ng-click="search(searchForm.searchText)"></button>
    </ion-nav-buttons>
    <ion-content>
        some code here....
    </ion-content>  
</ion-view> 

这是我们应用程序中的一个页面。对于后退按钮,我用 ioPlatform.registerBackButtonAction

覆盖了操作
$ionicPlatform.registerBackButtonAction(function (event) {
       if($state.current.name==="app.home"){

             var myPopup = $ionicPopup.show({
                    title: 'Exit the application',
                    scope: $scope,
                    buttons: [
                      { text: 'Cancel', 
                        onTap: function(e) {
                            $state.go("app.home");
                        }
                      },
                      {
                        text: 'Yes',
                        type: 'button-positive',
                        onTap: function(e) {
                            navigator.app.exitApp();
                        }
                      }
                    ]
                  });
        }
        else if($state.current.name==="app.couponlists"){
            $state.go('app.home');
        }
        else if($state.current.name==="app.deallists"){
            $state.go('app.home');
        }
        else if($state.current.name==="app.coupondetail"){
            $state.go('app.couponlists');
        }
        else{
          navigator.app.backHistory();
        }
      }, 100);

在实施之前先阅读文档。 Ionic Platform Doc

可用选项有

  1. onHardwareBackButton(回调)
  2. offHardwareBackButton(回调)
  3. registerBackButtonAction(回调,优先级,[actionId])
  4. 开(类型,回调)

确保首先调用您的 $ionicPlatform.ready() 。

你需要使用$ionicPLatform.registerBackButtonAction来实现,根据状态重定向,但是你需要确保先调用$ionicPlatform.ready(),见下面的代码

$ionicPlatform.registerBackButtonAction(function (event) {
      if ($state.$current.name=="app.login" || $state.$current.name=="app.signup"){
              // Do not go to the previous state (or view) for these states. 
              // Do nothing here to disable H/W back button.
              $cordovaDialogs.alert('Going back is not allowed for this page', 'Notice', 'OK')
              .then(function() {
                // callback success
              });
          }
          else if($state.$current.name=="app.productlist")
          {
            $location.path("/productlist");
          } else {
              // For all other states, the H/W BACK button is enabled
              navigator.app.backHistory();
          }  }, 100);