按下后退按钮时的Android关闭应用程序

问题描述:

嗨我在我的应用程序中进行了修改,即在单击后退按钮后关闭我的应用程序。这听起来很普遍吗?但这是我的应用程序发生的事情。我有3个屏幕:开始页面,游戏页面和乐谱页面。按下开始页面上的开始按钮后,它将启动游戏页面意图。完成游戏后,游戏页面会然后将意图转化为得分页面,当后退按钮从积分页压,意图将在起始页这样过去了:按下后退按钮时的Android关闭应用程序

  1. 启动页面 - >游戏第
  2. 游戏页面 - >分数页
  3. 分数页(当按下后退按钮) - >起始页

现在我去后回到起始页面,当我再次按下,而不是后退按钮退出应用程序,它会回到分数页,如果我按了回来,但是吨它会再次进入开始页面,形成一个无限循环。我把这个代码,我开始页,但它并没有解决我的问题:

@Override 
public void onBackPressed() { 
    Startup.this.finish(); 
} 

我需要改变我的意图的流量或有这一个可能的解决方案?

或者你可以从分数页面调用启动页面时,只需使用标志Intent.FLAG_ACTIVITY_CLEAR_TOP。

Intent intent = new Intent(this, StartActivity.class) 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
+0

这是我的一个。谢谢! :) – KaHeL

刚刚推出比分活动之前增加你的游戏页面

//just after your startActivity(scoreIntent) 
this.finish(); 

在这个片段中,这将完成的游戏活动。 现在,当你想要结束分数活动时,不要启动一个新的开始活动的意图,而只是结束你的分数活动(这意味着,将压倒性的回调保留在其默认设置下)

这是有效的,因为如果你在自然结束时关闭游戏活动,堆栈中第二个最顶端的活动将成为第一个活动,这样您可以结束最上面的活动(得分1)来检索起始页面。如果您添加另一个页面(例如start-game-gameover-score),您需要在每个非外部活动中复制此行为(在前面的示例中,在游戏和gameover页面中)

+0

哦我明白了,只是说我的活动并不会在我点击后退按钮后立即结束?感谢您的回答,这是我第一次在我的活动中添加意图,这就是为什么我不熟悉它。 – KaHeL

+0

我编辑了我的答案,请再读一遍:) –

在起始页当startActivity的游戏页面执行以下操作

startActivity(intent);//intent for GamePage 
    finish(); 

在游戏页面时startActivity的分数页面请在分数页面按下后退按钮时,以下

startActivity(intent);//intent for Score Page 
    finish(); 

做以下

startActivity(intent);//intent for StartPage 
    finish(); 
+0

谢谢,我现在明白了。 – KaHeL

+1

这将导致Star​​tPage活动在每个应用程序循环中被销毁并重新创建(毫无意义)。 –

+0

如果他想从ScorePage – Rasel

每当您用新的意图调用新的活动,然后写

finish(); 

之后startActivity()

当您调用新的活动时,请在编写finish()后检查。

另一个选项。 写launchmode在manifest文件中的这些活动调用一次

清单文件 - ><activity android:name="Main" android:launchMode="singleTask" />

+0

去StartPage这个人救了我男人!谢谢,我需要避免有人通过登录活动,当我按下“后退按钮”,它会把他们带到主要(登录)活动大声笑。谢谢! – msqar