按下后退按钮时的Android关闭应用程序
嗨我在我的应用程序中进行了修改,即在单击后退按钮后关闭我的应用程序。这听起来很普遍吗?但这是我的应用程序发生的事情。我有3个屏幕:开始页面,游戏页面和乐谱页面。按下开始页面上的开始按钮后,它将启动游戏页面意图。完成游戏后,游戏页面会然后将意图转化为得分页面,当后退按钮从积分页压,意图将在起始页这样过去了:按下后退按钮时的Android关闭应用程序
- 启动页面 - >游戏第
- 游戏页面 - >分数页
- 分数页(当按下后退按钮) - >起始页
现在我去后回到起始页面,当我再次按下,而不是后退按钮退出应用程序,它会回到分数页,如果我按了回来,但是吨它会再次进入开始页面,形成一个无限循环。我把这个代码,我开始页,但它并没有解决我的问题:
@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);
刚刚推出比分活动之前增加你的游戏页面
//just after your startActivity(scoreIntent)
this.finish();
在这个片段中,这将完成的游戏活动。 现在,当你想要结束分数活动时,不要启动一个新的开始活动的意图,而只是结束你的分数活动(这意味着,将压倒性的回调保留在其默认设置下)
这是有效的,因为如果你在自然结束时关闭游戏活动,堆栈中第二个最顶端的活动将成为第一个活动,这样您可以结束最上面的活动(得分1)来检索起始页面。如果您添加另一个页面(例如start-game-gameover-score),您需要在每个非外部活动中复制此行为(在前面的示例中,在游戏和gameover页面中)
哦我明白了,只是说我的活动并不会在我点击后退按钮后立即结束?感谢您的回答,这是我第一次在我的活动中添加意图,这就是为什么我不熟悉它。 – KaHeL
我编辑了我的答案,请再读一遍:) –
在起始页当startActivity的游戏页面执行以下操作
startActivity(intent);//intent for GamePage
finish();
在游戏页面时startActivity的分数页面请在分数页面按下后退按钮时,以下
startActivity(intent);//intent for Score Page
finish();
做以下
startActivity(intent);//intent for StartPage
finish();
每当您用新的意图调用新的活动,然后写
finish();
之后startActivity()
。
当您调用新的活动时,请在编写finish()
后检查。
另一个选项。 写launchmode在manifest
文件中的这些活动调用一次
清单文件 - ><activity android:name="Main" android:launchMode="singleTask" />
去StartPage这个人救了我男人!谢谢,我需要避免有人通过登录活动,当我按下“后退按钮”,它会把他们带到主要(登录)活动大声笑。谢谢! – msqar
这是我的一个。谢谢! :) – KaHeL