【问题标题】:Exit the app when back button in device is clicked单击设备中的后退按钮时退出应用程序
【发布时间】:2016-02-12 16:40:56
【问题描述】:

我的应用中有 3 个活动。

Activity A(Main Page) -> Activity B -> Activity C.

Activity C中的submit button被点击后,会再次回到Activity A。当我点击设备中的返回按钮退出应用程序时,它会再次返回到 Activity C,然后是 BA ,然后只能出口。

有没有办法让应用程序在返回按钮时立即退出 在 Activity A 中按下设备?

我在 Activity A 中添加了以下代码,但问题是它仍然转到 Activity C 而不是退出。

boolean doubleBackToExitPressedOnce = false;

@Override
public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }

    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;                       
        }
    }, 2000);
} 

【问题讨论】:

  • 当你从 C 回到活动 A 时,你是在使用 finish() 关闭 C 吗?
  • 当您想退出应用程序时清除活动返回状态。
  • @Chol 不,我使用意图从 C 调用 A
  • 取决于您想要的流程,但也许当从 B 启动 C 时,您应该完成 B,然后当从 C 启动回 A 时,您也应该完成 C 而不是创建 A 的新实例

标签: java android button


【解决方案1】:

当您提交活动 C 而不是关闭它时,您可能会再次打开活动 A。因此,请执行以下操作:为活动 B 的结果启动活动 C,当您在活动 C 上提交时调用 setResult(),然后在活动 C 上调用 finish(),然后在活动 B 中覆盖 onActivityResult(),当您从活动 C 中获取结果时在活动B上调用finish()。然后你回到活动A,如果你按下返回,你的APP将关闭。 :) 希望这会有所帮助

【讨论】:

    【解决方案2】:

    我遇到了和你一样的情况。基本上我有 HelloActivity(用于登录/注册),当使用完成登录时,他们会转到 MainActivity。当单击 MainActivity 的后退按钮时,我不希望用户转到 HelloActivity。为了做到这一点,我所要做的就是在 MainActivity 的意图期间调用 finish()。举个例子:

    Intent intent = new Intent(this, MainAcivity.class);
    startActivity(intent);
    finish();
    

    【讨论】:

      【解决方案3】:

      感谢大家的回答和评论。我已经使用下面的代码解决了它

       public void onBackPressed(){
              Intent a = new Intent(Intent.ACTION_MAIN);
              a.addCategory(Intent.CATEGORY_HOME);
              a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              startActivity(a);
      
          }
      

      【讨论】:

        最近更新 更多