2014-03-24 90 views
0

我认为这个问题已被多次询问,但这是一个不同的场景。我有4个活动说act1,act2,act3,act4,我已经打算这样act1-> act2-> act3-> ACT4当按下后退按钮时退出应用程序

ACT1-分支选择,
ACT2年选择,
ACT3-被摄体选择,
ACT4-显示所选择的主题
用户可以从ACT4按下返回按钮它移动到act3并可以选择不同的主题,类似地,当他按下act3上的按钮时,它将移动到年份选择活动,即 act2。所以我想要3个活动act1,act2,act3活着,所以我没有写完成方法。我已经把act4中的home按钮导致act1。
当我按下后退按钮在ACT1的应用程序应该关闭,但其形成一个循环,并打开所有正在出现instead.please的prevoius活动,为我提供了解决方案,对不起,如果这个问题太冗长

回答

-1

这可能不是way..but您可以覆盖你的ACT1的onBackPressed按钮,写

System.exit(0); 

这将立即关闭应用程序的最佳。 可能有更好的解决方案过于

0

在APP1插件:

@Override 
public void onBackPressed() { 
Intent startMain = new Intent(Intent.ACTION_MAIN); 
     startMain.addCategory(Intent.CATEGORY_HOME); 
     startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(startMain); 
}  
+0

非常感谢这是工作 – user3456614

+0

但这是一个指向主页,但如果我想要得到的页面,我打开应用程序我应该修改上面的代码 – user3456614

+0

我认为你想要一个正常的意图,就像@giacomoni有post.Intent it = new Intent(ActivityYouAre.this,ActivityYouWanToGo.class); it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(it); – anotherBug

2

从活动4来当回活动1,如下面的代码,您应该关闭所有活动,使用标志Intent.FLAG_ACTIVITY_CLEAR_TOP

Intent it = new Intent(Activity4.this, Activity1.class); 
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(it); 

所以在你的活动1当你按下后退按钮,它会完成应用程序。

希望它有帮助!

+0

这一个只关闭act4,而不是act3,act2这些仍然出现,当我按下后面的按钮在act1 – user3456614

+0

你可以发布你的代码在你的答案? – Giacomoni

0

这就是它应该如何工作。现在在你的堆栈中,你有act1 - > act2 - > act3 - > act4 - > act 1. 所以当你按下从act1的按钮时,它只会打开act4。你必须做的是,当从act4开始act1时,将FLAG_ACTIVITY_CLEAR_TOP标志添加到你的意图中。该标志所做的是要求android操作系统从后面的堆栈中删除以前的活动。

相关问题