Android Studio如何为单后退和双后退按钮按下执行不同的任务

时间:2019-12-02 19:54:15

标签: java android android-studio onbackpressed

关于“两次单击后退按钮以退出活动”有很多答案,但类似的事情,但是我想对我的项目进行的操作是我想对单击后退按钮的双击做不同的事情 例如,在我的情况下,如果一次按下后退按钮并同时显示一个祝酒词“再次按下后退以退出”,并且如果用户这样做,那么我想进入主屏幕/应用程序的主活动。 我真的很努力为此编写代码 我已经尝试过了,但是它没有按预期工作,即使按两次,应用程序也不会退出。 任何帮助表示赞赏。 我的代码

enter code here
private static final int TIME_INTERVAL = 2000;
    private long mBackPressed;
 public void onBackPressed() {
 if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis())
            {
                super.onBackPressed();
                return;
            }


            else {
                Toast.makeText(getBaseContext(), "Tap back button in order to exit", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
}
 mBackPressed = System.currentTimeMillis();

2 个答案:

答案 0 :(得分:0)

您处在正确的轨道上,但这是因为每次按下后退按钮时都要设置mBackPressed = System.currentTimeMillis();,因此它将永远不会传递您拥有的第一个if语句。似乎您也想跟踪他们单击后退按钮的次数。

尝试一下

private static final int TIME_INTERVAL = 2000;
private long mBackPressed = -1;
private int clicks = 0;

public void onBackPressed() {
    if (mBackPressed == -1) //checks if the time hasnt been set yet
        mBackPressed = System.currentTimeMillis();
    clicks++; //or you can put this in the if statement below
    if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis()) {
        super.onBackPressed();
        return;
    } else {
        Toast.makeText(getBaseContext(), "Tap back button in order to exit", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        mBackPressed = -1; //resets the time the click was made
        clicks = 0; //resets the clicks
    }
}

答案 1 :(得分:0)

此方法可能是一个简单的解决方案:

@Override
public void onBackPressed() {
     private final static int TIME_INTERVAL = 500;
     long backPressed = 0L;

     if ((System.currentTimeMillis() - backPressed < TIME_INTERVAL))
            System.exit(0); // do what you want on double click
     else {
            backPressed = System.currentTimeMillis();
            getSnackbar(R.string.double_back_press_message,Snackbar.LENGTH_SHORT).show();
            super.onBackPressed();
      }
}
相关问题