在我的主要活动中,用户会收到通知,按下硬件返回按钮退出应用程序。除了用户死亡之外,这在大多数情况下都有效。当用户死亡时,它转到GameOverActivity。如果用户按下此活动中的后退按钮,然后继续按下主活动两次,则会重新打开游戏中的活动。这是代码,我已经在游戏中的后退按钮上声明了finish(),但它似乎没有帮助。
MainScreen返回退出方法:
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Press again to quit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
}
GameOverActivity代码:
backButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent mainScreenActivityIntent = new Intent(GameOverActivity.this, MainScreenActivity.class);
startActivity(mainScreenActivityIntent);
finish();
}
});
}
@Override
public void onBackPressed() {
Intent mainScreenActivityIntent = new Intent(GameOverActivity.this, MainScreenActivity.class);
mainScreenActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mainScreenActivityIntent);
finish();
}
以下是碰撞的逻辑,从而创建了GameOverActivity:
if (weight.getBounds().intersect(player.getBounds())) {
player.setTouched(false);
Intent gameOverIntent = new Intent(this.getContext(), GameOverActivity.class);
this.getContext().startActivity(gameOverIntent);
((Activity) getContext()).finish();
}
答案 0 :(得分:0)
我认为你对Activity life cycle有些困惑。
按回GameOverActivity
会实例化新的mainScreenActivity
,这会产生问题。
并在你的GameOverActivity onbackpressed中调用super.onBackPressed
@Override
public void onBackPressed()
{
super.onBackPressed();
// and dont start a new activity as you are stacking MainActivity instances
finish()
}
答案 1 :(得分:0)
您正在开始一项新活动,只是完成当前活动,添加必要的代码以完成从onBackPressed开始的活动。
答案 2 :(得分:0)
您应该在开始活动后finish()
立即致电MainScreen
GameOverActivity