【问题标题】:Override onBackPressed() method. Back button has to be clicked twice to quit the Activity覆盖 onBackPressed() 方法。必须单击两次后退按钮才能退出活动
【发布时间】:2021-02-14 10:52:30
【问题描述】:

我的应用如下所示:

start activity -> menu -> content -> questionnarie -> questionnarie results

点击后退按钮后,我想从“问卷调查结果”转到“菜单”活动。我用的方法:

@Override
public void onBackPressed() {
    startActivity(new Intent(this, Menu.class));
    finish();
}

它可以工作,但是当我再次单击返回按钮时,我处于同一个活动中,并且必须按两次开始活动返回按钮。我怎样才能使这个方法正常工作?

【问题讨论】:

  • 删除标签android-studio。此标签用于有关 Android Studio 产品的问题/问题。您的问题是关于 Android,而不是关于 Android Studio。

标签: java android android-intent


【解决方案1】:

当你这样做时:

startActivity(new Intent(this, Menu.class));

这将启动Menu新实例。您想返回Menu现有实例。为此,您需要:

Intent intent = new Intent(this, Menu.class));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
                Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

这告诉 Android 你想回到Menu 的现有实例。

【讨论】:

    【解决方案2】:

    您可以使用一个标志,然后根据标志状态退出用户。像这样的:

    boolean pressed = false;
    
    @Override
    public void onBackPressed() {
        if (pressed) {
            super.onBackPressed();
            return;
        }
    
        this.pressed = true;
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
    
    // after 2 sec making the `pressed` value `false` as default
        new Handler().postDelayed(new Runnable() {
    
            @Override
            public void run() {
                pressed=false;                       
            }
        }, 2000);
    } 
    

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      相关资源
      最近更新 更多