访问Android应用程序中的兄弟选项卡?

时间:2011-04-03 04:25:46

标签: android android-tabhost

我有一个使用TabHost的Android应用程序,可以在每个标签中创建几个包含不同活动的标签。

当某人在与标签A相关联的活动中执行某个操作时,我想以编程方式切换到标签B,并在标签B的活动上调用一个功能,为其提供标签A中生成的一些数据。

这样的事情可能吗?我不知道如何从A活动中访问TabHost对象或B活动。我尝试将这些对象传递给A活动,方法是将它们作为“额外”添加到Intent中,但这不起作用,可能是因为这些类不可序列化。如果我可以访问TabActivity本身,那可能是最好的解决方案。

谢谢, 弗兰克

2 个答案:

答案 0 :(得分:1)

在TabActivity中实现BroadcastReceiver,在活动B中实现另一个。

在清单中注册自定义意图过滤器'actions'

获取活动A以发送包含TabActivity将接收的额外内容的Intent广播。

让TabActivity开关标签然后发送带有Intent的广播,其中包含活动B将接收/处理的附加内容。

为了扩展这一点,请以这种方式考虑......

在“正常”情况下,活动是一个独立/自包含的实体。如果它需要由另一个Activity执行某些操作,则它不需要知道关于该其他Activity的任何信息,只是一种“调用”它的方式,即使用具有相关动作/类别和额外数据的Intent集。

如果作为标签内容嵌入的活动,这仍然适用。活动本身并不“知道”它已被嵌入为标签内容(也不应该)。因此,它对TabHost或Tabactivity一无所知(使用时)。它也没有/不应该特别知道其他活动还有其他标签......

然而,TabActivity了解标签内容(它毕竟是创建它们)并且能够在它们之间进行调解是非常合理的。如果您只是在活动'X'广播中表示已执行特定操作并允许TabActivity接收并对Intent类型/数据执行操作,那么各个兄弟姐妹不需要具体了解彼此如何工作。

无论如何,那将是我的方法。 : - )

答案 1 :(得分:0)

您可以将数据存储在应用程序级别的对象中。然后,当活动B开始时,它可以检查数据。