我正在做一个电子游戏。我希望应用程序有3个屏幕。演示屏幕,播放屏幕和结束屏幕。如何打开一个新的活动而不打开最后一个?
我知道一个活动可以以一个意图开始,但我的问题是这样做,最后一个活动将被堆叠,允许用户回到以前的活动(或屏幕)。
有没有办法避免这种情况?
我正在做一个电子游戏。我希望应用程序有3个屏幕。演示屏幕,播放屏幕和结束屏幕。如何打开一个新的活动而不打开最后一个?
我知道一个活动可以以一个意图开始,但我的问题是这样做,最后一个活动将被堆叠,允许用户回到以前的活动(或屏幕)。
有没有办法避免这种情况?
在要关闭的活动中使用finish()
方法。
虽然其他人已经介绍过,如果您不希望用户能够返回该活动,可以简单地调用finish()
方法关闭活动,但还有一个问题希望快速回覆。
Android Design Principles,或更具体地说Navigation Principles告诉我们,我们不应该过多地使用后退按钮的默认行为。引导的直接引用;
一致的导航是整个用户体验的重要组成部分。几乎没有什么东西比基本导航更令用户感到沮丧,它们以不一致和意想不到的方式行事。
因此,不要阻止您的用户能够返回到输入屏幕,而应考虑通知您的用户他们将要离开游戏的提示。这样,后退按钮就可以继续按照他们的预期工作,并且用户不会突然从游戏中放弃。您可以像这样覆盖后退按钮;
@Override
public void onBackPressed() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Leaving the Game");
alert.setMessage("Do you want to leave the game? You might lose your progress.");
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
YourActivity.this.finish();
}
});
alert.setNegativeButton("Cancel", null);
alert.show();
}
此外,作为一个说明,如果你选择简单地使用finish()
关闭以前Activity
,返回按钮,然后会删除该用户退出应用,完全是因为没有Activity
回去。
不,它不会,如果你在startActivity()之后调用** finish()**。那么当前的活动将会完成。 – Melquiades 2015-02-07 23:02:04
[删除历史堆栈中的活动]可能的重复(http://stackoverflow.com/questions/1898886/removing-an-activity-from-the-history-stack) – motoDrizzt 2015-02-07 23:05:42
什么是真正的问题? – deadfish 2015-02-07 23:19:10