【问题标题】:Android close app when back button is pressed按下后退按钮时Android关闭应用程序
【发布时间】:2011-11-24 08:29:12
【问题描述】:

您好,我在我的应用中进行了修改,即我想在单击后退按钮后关闭我的应用。这听起来很普遍吧?但这正是我的应用程序发生的事情。我有 3 个屏幕:起始页、游戏页和分数页。从开始页面按下开始按钮后,它将启动游戏页面意图。游戏结束后,Game Page 会将 Intent 移动到 Score Page,当从 Score Page 按下返回按钮时,Intent 将像这样在 Start Page 上传递:

  1. 起始页 -> 游戏页
  2. 游戏页面 -> 得分页面
  3. 分数页(按下后退按钮时)-> 起始页

现在,当我再次按下返回按钮而不是退出应用程序时,当我返回起始页后,它只会再次返回乐谱页面,如果我按下返回按钮,它将再次进入开始页面一个无限循环。我将此代码放在我的起始页,但它不能解决我的问题:

@Override
public void onBackPressed() {
    Startup.this.finish();
}

我是否需要改变我的意图流程,或者有一个可能的解决方案?

【问题讨论】:

    标签: android


    【解决方案1】:

    或者您可以在从乐谱页面调用起始页面时仅使用标志 Intent.FLAG_ACTIVITY_CLEAR_TOP。

    Intent intent = new Intent(this, StartActivity.class)
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    

    【讨论】:

    • 这是给我的。谢谢! :)
    【解决方案2】:

    只需在您的游戏页面上添加这个 sn-p

    //just after your startActivity(scoreIntent)
    this.finish();
    

    这将在启动得分活动之前完成游戏活动。 现在,当您也想结束 score 活动时,不要使用 start 活动启动新意图,而只需结束您的 score 活动(这意味着,将 backpressed 回调保留为默认值。

    这是有效的,因为如果您在自然结束时关闭游戏活动,则堆栈中第二高的活动将是开始活动。这使您可以只结束最顶层的活动(得分一)来检索起始页。

    注意:此解决方案仅适用于您当前的工作流程。如果您添加另一个页面(例如 start-game-gameover-score),您需要在每个非外部活动中复制此行为(在前面的示例中,在游戏和游戏结束页面中)

    【讨论】:

    • 哦,我明白了,这只是意味着我的活动不会在我单击后退按钮后立即结束?感谢您的回答,这是我第一次在我的活动上添加意图,这就是为什么我不太熟悉它。
    【解决方案3】:

    在 StartPage 中,当 Game Page 的 startActivity 执行以下操作时

      startActivity(intent);//intent for GamePage
      finish();
    

    在得分页面的startActivity时在游戏页面中执行以下操作

      startActivity(intent);//intent for Score Page
      finish();
    

    在乐谱页面中按下 BackButton 时执行以下操作

    startActivity(intent);//intent for StartPage
      finish();
    

    【讨论】:

    • 这将导致 StartPage 活动在每个应用程序循环中被销毁和重新创建(毫无意义)。
    • 如果他想从 ScorePage 转到 StartPage
    【解决方案4】:

    每当您以新的意图调用新活动时,请编写

    finish();
    

    startActivity()之后。

    请在调用新活动时写finish()后检查。

    另一种选择。 在 manifest 文件中写入启动模式,这些活动只调用一次

    清单文件 --> <activity android:name="Main" android:launchMode="singleTask" />

    【讨论】:

    • 这个人救了我!谢谢,我需要避免有人通过登录活动,当我按下“后退按钮”时,它会将他们带到主要(登录)活动大声笑。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2014-01-02
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多