【问题标题】:Android force tab activity creation?Android强制标签活动创建?
【发布时间】:2010-06-03 15:29:56
【问题描述】:

我有一个 Android 应用程序,其主要活动是 tabhost。我正在向 tabhost 添加多个选项卡,目的是针对多个活动。

我的问题是在我单击选项卡之前不会创建这些活动(不会调用 onCreate)。这是一个问题,因为我需要注册广播接收器:可能会在打开特定选项卡之前发送广播。

我尝试通过以下方式解决此问题:

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

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

编辑:

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

将选项卡实现为视图而不是活动可能是一个更好的主意......这在一定程度上改变了我的问题:

如何在同一个活动中分离不同类型的逻辑?不是很期待 30+ 方法的 uberactivity。

【问题讨论】:

    标签: android android-activity broadcastreceiver android-tabhost


    【解决方案1】:

    我会使用 TabActivity 作为我的广播接收器,而不是选项卡活动。这将使您的代码更简洁,并且可以更好地控制您如何处理广播

    【讨论】:

    • 那怎么解决呢?我仍然有未初始化的选项卡活动,其中需要在广播到达时调用方法。
    • 您应该只尝试从当前运行的活动中调用方法。我认为不可能同时初始化和运行来自 tabhost 的所有活动。这样做是不好的做法,因为它会大量消耗手机电池和处理器。如果在您的活动暂停或尚未初始化时发生广播,您可以将其存储在您的 TabActivity 中,并仅在该活动恢复时将其传递给相关活动。
    • @disretrospect 您能否举例说明我们如何在创建/恢复时将数据从 TabActivity 传递给相关的 childActivity?谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多