由于另一个片段的更改而更新一个片段

时间:2014-06-08 08:26:21

标签: android google-maps android-fragments

情景:

我有两个片段(每个片段在一个单独的标签中)进行彼此相关的工作。例如:

public class A extends Fragment{
// Take user input and calculate a geo-location(this works fine)
// User can also mannually enter a location address and the geocoder
// figures out the Lat/Lng of that location.
// Uses a Asych task.
}

public class B extends Fragment{
// This a Google map. Based on Latitude & Longitude
// place a marker at that location(which is provided by class A.)
// Do other Stuff aswell 
}

问题:

我想将位置信息传递给B级。但是,一旦我在A级计算完我的位置,我就无法使用标记更新地图。 我所看到的是,我的应用程序启动B类onCreateView()方法运行的那一刻。这是我通常将标记功能信息放在哪里。但是,A类的Asych任务需要一些时间来计算地理位置,因此我还没有为B类中的markers方法提供位置。一旦Asych任务完成而没有再次调用A类中的onCreateView()(对于B类),是否还要将标记添加到地图中?


换句话说

我可以以某种方式传递位置信息(对于标记方法),因此在我的Asych任务完成后,在Google地图上删除标记。

2 个答案:

答案 0 :(得分:1)

片段之间进行通信的最佳方式是使用听众,在这里您可以找到an example how to implement that

当你的AsyncTask结束时,你可以调用你的侦听器,它将与你的FragmentB通信并在地图中添加标记

答案 1 :(得分:0)

Fragment B的引用传递给Fragment A构造函数。

然后,您可以在Fragment B中创建一个方法,将marker添加到地图中。

Fragment A下载标记位置后,您可以调用Fragment B的引用并调用其method来更新标记