这是一个风格问题而不是实际的“如何做到”,但基本情况是:我有一个活动MyActivity
,其中包含MapFragment
,以及{ {1}} List
是我自己的类,负责显示一些数据。 Renderers
也有Renderers
从另一个类中获取其内容视图,我们称之为ViewPagers
。有时,某些ViewPagerTab
中会发生某些事情,需要更新顶级ViewPagerTabs
中的地图。我认为,有一些方法:
1)我的Activity
和我的Renderers
都包含对上下文的引用。如果我将上下文转换为ViewPagerTabs
,我可以访问它的map参数。
2)通过使用对上下文的引用,我可以在其上调用MyActivity
并以此方式获取地图。
3)我可以在创建地图时将地图从getSupportFragmentManager().findFragmentById(R.id.map)).getMap()
传递到Activity
到Renderers
,这样每个地图都可以作为类变量访问。
4)在我的ViewPagerTabs
中使用BroadcastReceiver
,并在地图需要从Activity
更新时向其发送消息。
我错过了什么吗?这样做最好/最干净的方法是什么?
答案 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怎么样。我认为它不会起作用,因为你的数据是动态的,但它是活动之间沟通的一种方式。