android设备硬件后退按钮问题

时间:2017-11-22 11:20:53

标签: ionic-framework ionic2 back-button ion-select

我正在离子工作当我在Android设备上安装应用程序时,硬件后退按钮无法正常工作,经过一些R&我有解决方案注册后退按钮我已经完成了。但我的问题是当选择选项弹出窗口打开时我按下后退按钮然后它解除了弹出窗口,但是当我想在按下硬件后退按钮后重新打开选择选项时我无法打开它。注册后退按钮使用某些条件来检查活动门户并解除活动门户(如果找到)。但它不允许再次打开选择选项。任何人都可以帮我解决这个问题吗?我的代码在下面......

import { Component } from '@angular/core';
import * as mapboxgl from 'mapbox-gl';
import * as MapboxDraw from '@mapbox/mapbox-gl-draw';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  static t;
  ngOnInit() {
    mapboxgl.accessToken = 'Token';
    AppComponent.t.map= new mapboxgl.Map({
      container: 'map',
      style: 'mapbox://styles/mapbox/light-v9',
      zoom: 5,
      center: [-78.880453, 42.897852]
    });

     const draw = new MapboxDraw({
        displayControlsDefault: false,
        controls: {
            polygon: true,
            trash: true
        }
    });
    AppComponent.t.map.addControl(draw);
  }
}

和select-option

platform.ready().then(() => {
      // this.config.pullVersion();
      let ready = true;


      // to handle hardware back button in android
      platform.registerBackButtonAction(() => {
        console.log("Back button action called");

        let activePortal = ionicApp._loadingPortal.getActive() ||
          ionicApp._modalPortal.getActive() ||
          ionicApp._toastPortal.getActive() ||
          ionicApp._overlayPortal.getActive();

          let view = this.navCtrl.getActive();
        if (activePortal) {

           ready = false;
            activePortal.dismiss();
            activePortal.onDidDismiss(() => { ready = true; });

            console.log("handled with portal");
            return;

        }

        if (menuCtrl.isOpen()) {
          menuCtrl.close();

          console.log("closing menu");
          return;
        }

        if (this.navCtrl.canGoBack()) {

           this.navCtrl.pop();
            console.log("poping back");

          return;
        } else {
          console.log("exiting from app");
           platform.exitApp();
            console.log("poping back");

        }

      }, 1);
    });

这在后退按钮事件中被解雇,并且没有再次打开选择选项

<ion-select interface="popover" [disabled]="isStarted" [(ngModel)]="routeName" class="custom-option-btn" (ionChange)="optionsFn();">
            <ion-option value="" selected disabled>select Route</ion-option>
            <ion-option *ngFor="let cg of routeData;let idx = index" [value]="cg">{{cg.routeName}} </ion-option>
          </ion-select>

1 个答案:

答案 0 :(得分:1)

我一直在搜索关于这个主题的很多内容,Ionic Team 还没有为此开发出解决方案(我知道现在已经 3 年了)。似乎我们必须关闭离子选择的唯一方法是使用选择器内的“取消”按钮。

任何其他方式,使用 platform.backbutton 或 IonicApp 模块中的任何内容都不会让您做您需要的事情。

我能想到的唯一真正的解决方案是创建一个新的 Modal,仅用于选择,并实现您自己的滚动和可选项目,然后使用 ModalController.dismiss() 关闭选择,就像您按下取消一样在离子选择里面。

相关问题