2015-02-07 84 views
0

我正在做一个电子游戏。我希望应用程序有3个屏幕。演示屏幕,播放屏幕和结束屏幕。如何打开一个新的活动而不打开最后一个?

我知道一个活动可以以一个意图开始,但我的问题是这样做,最后一个活动将被堆叠,允许用户回到以前的活动(或屏幕)。

有没有办法避免这种情况?

+0

不,它不会,如果你在startActivity()之后调用** finish()**。那么当前的活动将会完成。 – Melquiades 2015-02-07 23:02:04

+0

[删除历史堆栈中的活动]可能的重复(http://stackoverflow.com/questions/1898886/removing-an-activity-from-the-history-stack) – motoDrizzt 2015-02-07 23:05:42

+0

什么是真正的问题? – deadfish 2015-02-07 23:19:10

回答

2

在要关闭的活动中使用finish()方法。

1

虽然其他人已经介绍过,如果您不希望用户能够返回该活动,可以简单地调用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回去。

相关问题