2011-04-03 69 views
0

我有一个Android应用程序使用TabHost在每个选项卡中创建具有不同活动的多个选项卡。在Android应用程序中访问同级选项卡?

当用户在与标签A相关联的活性的某些动作,我要编程切换到选项卡B,并调用选项卡B的活性的功能,以提供其与标签A.生成一些数据

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

感谢, 弗兰克

回答

0

你可以在应用程序水平的物体藏匿的数据。然后当活动B开始时,它可以检查数据。

1

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

注册都在清单中使用自定义意图过滤器“动作”

获取活动A发送一个广播,意图包括额外的TabActivity将收到。

让TabActivity开关标签随后发送一个带有一个意图的广播,其中活动B将接收/处理额外信息。

为了扩大这一点,认为它是这样的...

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

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

然而,TabActivity知道标签内容(它创建它们之后)和能够在它们之间进行调解。如果您只是简单地通过活动“X”广播来执行特定操作,并允许TabActivity接收并按照意图类型/数据操作,那么各个兄弟姐妹就不需要特别了解对方如何工作。

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

+0

你以前帮我用过我的应用程序,我还没有确定我的选项卡式应用程序是否应该有多个活动按照developer.google.com或者只有一个活动,尽可能多的堆栈溢出似乎认为。你对此有任何意见吗?我可以看到只有一项活动的原因。 – 2011-06-07 23:50:03

+0

@hooraygradschool:我只有我的当前应用程序的TabActivity的经验。它提供了一个7天的电视指南(每天一个标签)。每个选项卡的内容是一个ListActivity,所有7个选项卡使用相同的类,但是每个人都知道他们是否是第1天,第2天等,并且查询SQLite数据库以查找他们自己的24小时插槽。换句话说,这是一个Activity类重复7次。如果每个Tab都必须为不同的数据集保留相似的内容,则这是执行此操作的唯一方法。如果他们提供不同的功能,对不同的Tab内容使用不同的类只对我有意义。希望有所帮助。 – Squonk 2011-06-08 16:23:14

相关问题