0

在我的 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);
}
4

5 回答 5

1

Android 的设计不支持选择退出应用程序,而是由操作系统管理它。您可以通过其相应的 Intent 调出 Home 应用程序:

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

检查如何退出应用程序并显示主屏幕?

于 2012-11-28T14:50:24.457 回答
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);
}
于 2012-11-28T15:03:34.777 回答
0

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

读一读: 退出应用程序是否令人不悦?

如果您真的想退出,我无能为力,但我想我会提到这一点。

于 2012-11-28T14:51:01.900 回答
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);
}
于 2012-11-28T14:58:58.447 回答
0

这是一个值得商榷的话题,但我没有发现任何问题,或者按下后退按钮时应用程序退出。毕竟,对 finish() 的调用是后退按钮的默认行为。如果处理主屏幕的 Activity 位于 Activity 堆栈的底部,则调用 finish() 将退出您的应用程序。

我提出以下建议:让您的 MainMenuScreen 在一个单独的活动 MainMenuActivity 中处理,它是主要活动。回到MainMenuActivity时完成()其他活动,并在MainMenuActivity中像这样处理onKeyDown:

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        this.finish()
    }
}
于 2012-11-28T15:07:07.863 回答