Android Ionic 4中处理后退按钮的问题

Android Ionic 4中处理后退按钮的问题,android,ios,angular,ionic-framework,ionic4,Android,Ios,Angular,Ionic Framework,Ionic4,当我在android上构建并运行我的应用程序时,我意识到硬件后退按钮不起作用。 我有一个主页,它有两个子页面,一个主页和一个收藏夹页面,其中主页是默认页面。 如果我在“收藏夹”页面,单击“上一步”按钮,它会将我带到主页,但在主页上,如果单击“上一步”按钮,它会显示一个白色屏幕,并在几秒钟后重新启动应用程序。 我只有点击三次才能关闭应用程序。 我用的是离子4,角8 以下是我的应用程序路线的外观: { path: '', loadChildren: './pages/main/main.modu

当我在android上构建并运行我的应用程序时,我意识到硬件后退按钮不起作用。 我有一个主页,它有两个子页面,一个主页和一个收藏夹页面,其中主页是默认页面。 如果我在“收藏夹”页面,单击“上一步”按钮,它会将我带到主页,但在主页上,如果单击“上一步”按钮,它会显示一个白色屏幕,并在几秒钟后重新启动应用程序。 我只有点击三次才能关闭应用程序。 我用的是离子4,角8

以下是我的应用程序路线的外观:

  { path: '', loadChildren: './pages/main/main.module#MainPageModule' },
  { path: 'search', loadChildren: 
  './pages/search/search.module#SearchPageModule' },
  { path: 'catalog-view', loadChildren: './pages/cat-view/cat- 
  view.module#CatViewPageModule' },
下面是我的主要模块的外观:

const routes: Routes = [
  {
    path: 'main',
    component: MainPage,
    children: [
     { path: 'home', loadChildren: '../home/home.module#HomePageModule' },
      { path: 'favorites', loadChildren: 
     '../favorites/favorites.module#FavoritesPageModule' },
       ]
      },
      {
        path: '',
       redirectTo: '/main/home'
       }
   ];
我曾尝试在主页、Main甚至AppComponent中添加此功能,但没有任何效果:

ionViewDidEnter(){
  this.subscription = this.platform.backButton.subscribe(()=>{
      navigator['app'].exitApp();
  });
}

 ionViewWillLeave(){
  this.subscription.unsubscribe();
 }

我的主页中有以下代码,het在主页上向后退按钮注册了不同的功能。然后在它离开后再次注销

private isToastShown: boolean = false;

ionViewDidEnter(){
        /* When on home page the back button should confirm before exiting */
        this.platform.backButton.subscribeWithPriority(0, () => {
            if (!this.isToastShown) {
                this.presentConfirm();
            } else {
                navigator['app'].exitApp();
            }
        }, 0);
    }

    ionViewWillLeave() {
        /* Reset back button to pop pages when pressed */
        this.aPlatform.registerBackButtonAction(() => {
            if (this.aNavController.canGoBack()) {
                this.aNavController.pop();
            }
        });
    }

    private presentConfirm(): void {
        this.isToastShown = true;

        let lToast = this.aToastController.create({
            message: "Press back again to exit"
        });

        lToast.present().then(() => {
            setTimeout(() => {
                lToast.dismiss();
                this.isToastShown = false;
            }, 2000);
        });
    }

希望这有帮助

我让它工作了,这个问题很傻。 我必须将我的软件包更新到最新版本,尤其是@ionic native/core。 在我的家里,我只是简单地这样做:

ngOnInit(){
     this.platform.backButton.subscribe(() => {
     this.platform.backButton.unsubscribe();
     navigator['app'].exitApp();
   })
)

希望有帮助

嗨,谢谢你的回答。但我使用的是ionic 4,registerBackButton和exitApp()在版本中不存在。使用ionic 4的Edit answer函数不确定如何返回,因为您不再推送页面,而是导航到页面,因此,您可能需要在每页的IonViewDiEnter4上设置“后退”按钮的位置。当单击“后退”按钮时,IonViewDiEnter4会自动导航回主页。然而,问题出在主页上。当我在主页上单击后退时,它会显示一个白色屏幕,然后应用程序会重新启动。