1

我有一个主要活动是tabhost的Android应用程序。我正在向tabhost添加多个选项卡,以便执行几个活动。Android强制标签活动创建?

我的问题是,这些活动没有创建(onCreate不会被调用),直到我点击标签。这是一个问题,因为我需要注册broadcastreceivers:可能会发送广播 - 在打开特定选项卡之前。

我试图解决此方式:

  • 设置我的接收机静态和从其他地方注册。这是不可能的,因为我需要调用方法。
  • 调用tabHost.setCurrentTabByTag(the_tag),然后切换回我的根选项卡。这只有在有时候才有效,这是一个非常丑陋的解决方案。
  • 不使用活​​动,只是使用视图。也不是一个非常优雅的解决方案,因为它将我的tabHost活动变成一个巨大的主类,做各种不相关的事情。

这是什么问题的最佳解决方案?我能以某种方式发送广播“队列”,而不是在没有接收器时消失吗?我可以强制创建我的选项卡活动(这不是问题,我的用户几乎可以保证在某些点使用每个选项卡)?其他想法?

编辑:

根据CommonsWare在这个问题; Update tabs from a tab's activity in a Android TabHost

可能实现标签的意见,而不是活动的一个更好的主意......这有点改变了我的问题:

如何单独的不同类型的逻辑在同一个活动?并不真正期望30+方法的可行性。

回答

0

我会使用TabActivity作为我的广播接收器而不是标签活动。这会给你更清晰的代码和更多的控制你如何处理广播

+0

这将如何解决任何事情?我仍然留下未初始化的选项卡活动,在广播到达时需要调用方法。 – 2010-06-03 15:40:11

+1

您应该只尝试从当前正在运行的活动中调用方法。我认为不可能同时从一个tabhost初始化并运行所有活动。这样做是不好的做法,因为这会对手机电池和处理器造成重大损失。 如果在您的活动暂停或尚未初始化时发生广播,则可以将其存储在TabActivity中,并仅在该活动恢复时将其传递给相关活动。 – m6tt 2010-06-03 15:55:12

+0

@disretrospect您能不能展示示例如何在创建/恢复时将TabActivity中的数据传递给相关的childActivity?谢谢 – zeratul021 2011-08-30 17:49:54