使用意图重定向到Activity的问题

时间:2011-06-30 19:18:21

标签: android android-activity android-intent

问题:让我们说我有3个活动:MainMenu,LevelSelection和Game。我有一个按钮,在MainMenu中运行一个意图,将玩家重定向到LevelSelection。在LevelSelection中是另一个将玩家重定向到Game的按钮。当活动游戏结束时,它会运行一个意图将玩家重定向到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);

提前致谢。

3 个答案:

答案 0 :(得分:2)

尝试此操作,同时从游戏活动中调用 MainMenu 活动:

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

this.startActivity(intent);  

希望这会有所帮助。

答案 1 :(得分:1)

在清单中,我会为您的所有活动设置No historytrue。这将阻止用户在当前活动关闭时(或当用户按下“后退”时)返回到先前的活动。这可能会有所帮助,因为您正在尝试严格控制用户访问的活动。

我也会删除this.finish()。我认为你在意图开始之前就关闭了活动。因此,为什么它会回到之前的活动而不是新的活动。

另一种解决方案是仅为LevelSelection将“无历史记录”设置为“真实”。然后,您只需关闭“游戏”活动,它就应该返回MainMenu

答案 2 :(得分: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();