问题:让我们说我有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);
提前致谢。
答案 0 :(得分:2)
尝试此操作,同时从游戏活动中调用 MainMenu 活动:
Intent intent = new Intent(this, MainMenu.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
希望这会有所帮助。
答案 1 :(得分:1)
在清单中,我会为您的所有活动设置No history
到true
。这将阻止用户在当前活动关闭时(或当用户按下“后退”时)返回到先前的活动。这可能会有所帮助,因为您正在尝试严格控制用户访问的活动。
我也会删除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();