2011-12-08 33 views
2

我搜索过,并发现一般问题的几个答案,并尝试过他们都没有成功。我真的没有想到背堆栈如何工作,意图标记或完成方法。这是我的设置:返回堆栈,飞溅和TabActivity

在应用程序启动时,会出现一个启动屏幕,其中一对AsyncTasks在后台运行,并检查更新内容的几个Web服务器。 ProgressDialogs报告状态。完成后(通过最后的onPostExecute),我启动一个新的活动(“主页”)。这似乎反映了一些其他职位的,但我觉得我的杂牌是由于家庭是一个TabActivity,有4个选项卡,最初对标签要求setCurrentTab 0

因此,使用以前发布的建议:

  1. 安卓noHistory上飞溅活动
  2. 调用Splash.this.finish()它会启动家庭TabActivity
  3. 设置Intent.FLAG_ACTIVITY_CLEAR_TOP
  4. 的主页TabActivity意图标志设置主页后=“真” TabActivity意图标志o ˚FIntent.FLAG_ACTIVITY_NO_HISTORY

的用户看到飞溅的TabActivity发布会,用户点击到另一个选项卡,然后打回 - 应用程序关闭(不强制关闭 - 只是关闭返回到设备的主屏幕) 。

如果我不使用其中的任何一个,当用户在切换到另一个选项卡后回来时,它们会返回到Splash屏幕并卡住(我可以添加一个按钮或某物将它们带到Home TabActivity但这不是最佳的)。

想要的结果是,用户看到Splash,进入Home TabActivity,单击另一个选项卡,然后回来,他应该被带回初始设置的选项卡(选项卡0)。

任何洞察力是赞赏。

TYIA

回答

1

后退堆栈实际上是正式名称活动堆栈 - 每次启动一个活动的时候,也被压入堆栈的顶部(除非你设置你提到的那些标志之一)。

这意味着,除非主应用程序中的每个选项卡都是单独的活动,否则默认的返回键行为将会离开您的主要应用程序活动。

您可以通过taking over the back key或重写制表符切换行为来控制此项,以启动不同的活动。