2011-06-30 13 views
2

问题:可以说我有3个活动:MainMenu,LevelSelection和Game。我有一个按钮在MainMenu中运行一个意图,将玩家重定向到LevelSelection。在LevelSelection中是另一个将玩家重定向到游戏的按钮。当活动游戏结束时,它运行一个意图将玩家重定向到MainMenu活动。但是,在测试时,重定向将完成到LevelSelection而不是MainMenu。重定向到有意向活动的问题

的MainMenu => LevelSelection代码

this.finish(); 
Intent intent = new Intent(this, LevelSelection.class); 
this.startActivity(intent); 

LevelSelection =>游戏代码

this.finish(); 
Intent intent = new Intent(this, Game.class); 
this.startActivity(intent); 

游戏=> MeainMenu代码

this.finish(); 
Intent intent = new Intent(this, MainMenu.class); 
this.startActivity(intent); 

提前致谢。

回答

1

在清单中,我将为您的所有活动设置No historytrue。这将防止用户在当前关闭时(或者当用户按下“后退”时)回到先前的活动。这可能会有所帮助,因为您试图严格控制用户进行的活动。我也想删除this.finish()。我认为你在意图开始之前关闭了活动。因此,为什么它会回到以前的活动,而不是新的活动。

另一种解决方案是仅为LevelSelection将“无历史记录”设置为“真”。然后,您可以简单地关闭“游戏”活动,它应该返回到MainMenu

+0

这将特别解决这个问题。然而,这个应用程序比3个活动更复杂,我想知道为什么会发生这种行为。谢谢! – CapitanNerd

0

当启动电平选择,

FLAG_ACTIVITY_NO_HISTORY

的MainMenu => LevelSelection代码

this.finish(); 
Intent intent = new Intent(this, LevelSelection.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
this.startActivity(intent); 

,如果你想要去的从游戏模式到主菜单回来,简单地使用,

游戏=> MeainMenu代码

this.finish(); 
+0

这将特别解决这个问题。然而,这个应用程序比3个活动更复杂,我想知道为什么会发生这种行为。谢谢! – CapitanNerd

+0

我认为当游戏活动完成时,LevelSelection活动恢复。尝试调用MainMenu活动而不完成游戏活动。 – dcanh121

+0

它也没有工作。事实上,我在每次“重定向”之前运行“finish()”。例如,当我完成一个关卡时,我会调用“finish()”,然后调用一个知道是否必须返回主菜单(因为游戏结束)或下一关的方法。然而,我试图在调用intent后运行“finish()”,但结果是一样的。 – CapitanNerd

2

试试这个,而从游戏活动呼唤你的MainMenu活动:

Intent intent = new Intent(this, MainMenu.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

this.startActivity(intent); 

希望这会有所帮助。