手机后退按钮让我感到困惑。这个问题已被多次询问,但我没有得到解决方案。所以按照我的要求再次询问。
我有一个主屏幕活动 它调用3个活动 - 每个活动又调用2个活动。
假设我以这种方式导航
主页> Act1> SubAct1a> SubAct1b>主页(通过主页按钮)> Act2>主页> ACT3
现在在Act3中,当我按下电话BACK按钮时,我到了Home。此时我的要求是当我再次按下BACK按钮时,它应该退出应用程序。但它会发生什么呢?
Act2>主页> SubAct1b> SubAct1a> Act1>主页> EXIT
因此用户在退出应用程序之前按下BACK MULTIPLE次。
按HOME键是一个选项,但我也希望BACK也能正常工作。
我在HOME活动中有这段代码 - 但它根本不起作用
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
System.exit(0);
}
return super.onKeyDown(keyCode, event);
}
它只是返回到之前的活动。
答案 0 :(得分:1)
尝试在onCreate()
中添加此内容Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 1 :(得分:0)
您应该返回 true ,告诉系统您已经处理过这种情况,
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
System.exit(0);
return true;
}
return super.onKeyDown(keyCode, event);
}
当您开始家庭活动时,请尝试设置清除顶部标志...
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 2 :(得分:0)
试试这个: -
@Override
public void onBackPressed() {
Intent i=new Intent(currentclass.this,Home.class)
startActivity(i);
finish();
super.onBackPressed();
}
答案 3 :(得分:0)
当您从一个Activity转到另一个Activity时,请完成上一个Activity。然后
覆盖后退按钮并完成当前活动,如果用户按下它,那么我认为您的问题将得到解决。
Intent i=new Intent(currentclass.this, Act1.class)
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
最后
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
}
return true;
}