Java Android Studio如何为单键和双键返回按钮按下执行不同的任务
关于“点击后退按钮两次以退出活动”和类似的事情有很多答案,但我试图对我的项目做的是,我想为单次和双击后退按钮做不同的事情 例如,在我的例子中,如果按下后退按钮一次,同时显示“再次按下后退退出”的祝酒词,并且如果用户这样做,则我希望转到我的应用程序的主屏幕/主要活动,而应用程序正是这样做的。 我真的很难为此编写代码 我已经试过了,但没有达到预期效果,即使在双击的情况下,应用程序也不会退出。 感谢您的帮助。 我的代码Java Android Studio如何为单键和双键返回按钮按下执行不同的任务,java,android,android-studio,onbackpressed,Java,Android,Android Studio,Onbackpressed,关于“点击后退按钮两次以退出活动”和类似的事情有很多答案,但我试图对我的项目做的是,我想为单次和双击后退按钮做不同的事情 例如,在我的例子中,如果按下后退按钮一次,同时显示“再次按下后退退出”的祝酒词,并且如果用户这样做,则我希望转到我的应用程序的主屏幕/主要活动,而应用程序正是这样做的。 我真的很难为此编写代码 我已经试过了,但没有达到预期效果,即使在双击的情况下,应用程序也不会退出。 感谢您的帮助。 我的代码 您所处的轨道是正确的,但这是因为您正在设置mBackPressed=System.
您所处的轨道是正确的,但这是因为您正在设置
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
}
}
您所处的轨道是正确的,但这是因为您正在设置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
}
}
此方法可能是一个简单的解决方案:
@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();
}
}
@覆盖
public void onBackPressed(){
专用最终静态整数时间间隔=500;
长背压=0升;
if((System.currentTimeMillis()-反压<时间间隔))
System.exit(0);//双击即可执行所需操作
否则{
backPressed=System.currentTimeMillis();
getSnackbar(R.string.double_back_press_消息,Snackbar.LENGTH_SHORT).show();
super.onBackPressed();
}
}
此方法可能是一个简单的解决方案:
@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();
}
}
@覆盖
public void onBackPressed(){
专用最终静态整数时间间隔=500;
长背压=0升;
if((System.currentTimeMillis()-反压<时间间隔))
System.exit(0);//双击即可执行所需操作
否则{
backPressed=System.currentTimeMillis();
getSnackbar(R.string.double_back_press_消息,Snackbar.LENGTH_SHORT).show();
super.onBackPressed();
}
}