访问父Activity的数据的最佳方式

时间:2013-10-08 18:48:30

标签: android

这是一个风格问题而不是实际的“如何做到”,但基本情况是:我有一个活动MyActivity,其中包含MapFragment,以及{ {1}} List是我自己的类,负责显示一些数据。 Renderers也有Renderers从另一个类中获取其内容视图,我们称之为ViewPagers。有时,某些ViewPagerTab中会发生某些事情,需要更新顶级ViewPagerTabs中的地图。我认为,有一些方法:

1)我的Activity和我的Renderers都包含对上下文的引用。如果我将上下文转换为ViewPagerTabs,我可以访问它的map参数。

2)通过使用对上下文的引用,我可以在其上调用MyActivity并以此方式获取地图。

3)我可以在创建地图时将地图从getSupportFragmentManager().findFragmentById(R.id.map)).getMap()传递到ActivityRenderers,这样每个地图都可以作为类变量访问。

4)在我的ViewPagerTabs中使用BroadcastReceiver,并在地图需要从Activity更新时向其发送消息。

我错过了什么吗?这样做最好/最干净的方法是什么?

4 个答案:

答案 0 :(得分:4)

本课可能会给您一些想法: Communicating with other Fragments 基本上,我们的想法是在子单元(如Fragment)中定义接口,然后在父Activity中实现它。然后,实际上调用 Fragment中接口中的方法。

答案 1 :(得分:1)

另一种方法是创建一个extends Application的类。在那里,您可以“共享和声明”许多非上下文特定的变量(如美化容器,但您不必创建多个实例或查找)。

需要在您的清单中进行一些设置,但之后您的所有活动都可以调用MyApp app = (MyApp) this.getApplication();(或通过onAttach活动的.getApplication()分段)

答案 2 :(得分:0)

标准方法是定义一个监听器接口,但我发现这很麻烦。 Otto是一个非常好的选择,在做出决定之前至少应该考虑一下。

答案 3 :(得分:0)

我认为这有点过头但是parcel怎么样。我认为它不会起作用,因为你的数据是动态的,但它是活动之间沟通的一种方式。