2012-11-28 37 views
0

在我的android应用程序中,我更改了后退按钮的功能,以便它进入我的游戏的主屏幕,现在它已经在主屏幕上,我应该如何使用后退按钮退出整个应用程序?android:我怎么才能退出应用程序?

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
      Assets.getInstance().getClick().play(1); 
      this.clearScreenStack(); 
      this.setScreen(new MainMenuScreen(this)); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

回答

1

Android的设计并不倾向于选择退出应用程序,而是由操作系统来管理它。您可以通过其相应的意图打开主页应用:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

检查How to exit from the application and show the home screen?

0

谷歌不鼓励退出按钮,你应该让操作系统处理它。

给这个一读: Is quitting an application frowned upon?

我不能帮助,如果你真的想退出,虽然,但我想我会提到这一点。

+0

您是否阅读过该问题? OP询问如何使用后退按钮退出应用程序(这是Android的股票行为),而不是执行退出按钮。 – FoamyGuy

+0

OP需要后退按钮上的退出按钮功能。基本上是一样的。 – user1810737

+0

,但后退按钮的默认行为是调用堆栈顶部Activity中的finish()......他只是试图弄清楚如何在主屏幕显示时使其具有默认行为。 – FoamyGuy

0

您还可以检查用户是否进入了后退按钮两次。

boolean backPressed = false; 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && !backPressed) { 
      Assets.getInstance().getClick().play(1); 
      this.clearScreenStack(); 
      this.setScreen(new MainMenuScreen(this)); 
      backPressed = true; 
     return true; 
    } 

    backPressed = false; 
    return super.onKeyDown(keyCode, event); 
} 
1

如果你有,你可以用它来查看哪些屏幕是显示你可以做一些这样的机制:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     if(mainScreenIsShowing == true){ 
      //If the main screen is showing let the back button 
      //have its default behavior. 
      return super.onKeyDown(keyCode, event); 
     }else{ 
      Assets.getInstance().getClick().play(1); 
      this.clearScreenStack(); 
      this.setScreen(new MainMenuScreen(this)); 
      return true; 
     } 

    } 
    return super.onKeyDown(keyCode, event); 
} 
0

这是一个商榷课题,但我认为没有错或与应用程序在按下后退按钮时退出。毕竟,调用finish()是后退按钮的默认行为。如果处理主屏幕的活动位于活动堆栈的底部,则对finish()的调用将退出应用程序。

我建议如下:让您的MainMenuScreen在单独的活动MainMenuActivity中处理,这是主要活动。在返回MainMenuActivity时完成()其他活动,并在MainMenuActivity中处理onKeyDown,如下所示:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     this.finish() 
    } 
} 
+0

或者只是不要重写和使用默认行为,这是相同的... –

相关问题