Back Stack,Splash和TabActivity

时间:2011-12-08 09:38:23

标签: android

我搜索过SO并找到了一般问题的几个答案,并且尝试了所有这些并且没有成功。我真的不知道后面的堆栈如何工作,Intent标志或完成方法。这是我的设置:

在应用程序启动时,会出现一个启动画面,其中有几个AsyncTasks在后台运行,并检查几个Web服务器以获取更新的内容。 ProgressDialogs报告状态。完成后(通过最后一个onPostExecute),我启动一个新的Activity(“Home”)。这似乎反映了一些其他帖子,但我认为我的kludge是由于Home是一个TabActivity,有4个标签,最初在标签0上调用setCurrentTab。

所以,使用之前发布的建议:

  1. android:noHistory =“真实”的Splash活动
  2. 启动Home TabActivity后调用Splash.this.finish()
  3. 设置Intent.FLAG_ACTIVITY_CLEAR_TOP的Home TabActivity意图标志
  4. 设置Intent.FLAG_ACTIVITY_NO_HISTORY的Home TabActivity意图标志
  5. 用户看到启动,TabActivity启动,用户点击另一个选项卡,然后点击 - 应用程序关闭(不强制关闭 - 只需关闭设备主屏幕)。< / p>

    如果我不使用其中任何一个,当用户在更改到另一个标签后回击时,它们会回到启动画面并被卡住(我可以添加一个按钮或其他东西将它们带到Home TabActivity但是这不是最佳的。)

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

    感谢任何见解。

    TYIA

1 个答案:

答案 0 :(得分:1)

后台堆栈实际上正式称为活动堆栈 - 每次启动一个活动时,它都会被推到堆栈的顶部(除非你设置了你提到的那些标志之一)。

这意味着,除非主应用中的每个标签都是单独的活动,否则默认的返回键行为将是保留主应用活动。

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