Java 在菜单打开时覆盖BackButton
我试图实现的是,当用户在Java 在菜单打开时覆盖BackButton,java,android,back-button,Java,Android,Back Button,我试图实现的是,当用户在菜单可见时单击后退按钮,菜单实际和菜单的状态从可见变为不可见。如果菜单未打开且用户单击后退,则会显示一个土司,上面写着“再次按下退出”,如果在2秒内单击后退,应用程序将关闭 我拥有的代码: @Override public void finish() { if (MENU.getVisibility() == View.VISIBLE){ MENU.setVisibility(View.INVISIBLE); menuAc
菜单
可见时单击后退按钮,菜单实际
和菜单
的状态从可见变为不可见。如果菜单
未打开且用户单击后退,则会显示一个土司
,上面写着“再次按下退出”
,如果在2秒内单击后退,应用程序将关闭
我拥有的代码:
@Override
public void finish() {
if (MENU.getVisibility() == View.VISIBLE){
MENU.setVisibility(View.INVISIBLE);
menuActual.setVisibility(View.INVISIBLE);
}else {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
moveTaskToBack(true);
return;
}else {
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Tap again to Exit!", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
}
}`
我已声明布尔doubleBackToExitPressedOnce=false代码>
应用程序甚至会显示土司
并说“再次按下退出”
,但如果再次单击“上一步”,应用程序会说“AppName没有响应”
苦苦思索这是为什么,这是漫长的一天
谢谢 在on backpressed中执行此操作,如下所示:
private boolean doubleBackToExitPressedOnce = false;
private Handler handler;
private Runnable runnable;
@Override
public void onBackPressed() {
if (MENU.getVisibility() == View.VISIBLE) {
MENU.setVisibility(View.INVISIBLE);
menuActual.setVisibility(View.INVISIBLE);
return;
}
if (!doubleBackToExitPressedOnce) {
doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Tap again to Exit!", Toast.LENGTH_SHORT).show();
handler = new Handler();
handler.postDelayed(runnable = new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
return;
}
// Removes the callBack
handler.removeCallbacks(runnable);
// Replace this next line with finishAffinity() if you want to close the app.
super.onBackPressed();
}