Android:等待异步结束于一个片段,以启动其他片段中的另一个函数

时间:2014-08-21 16:44:31

标签: android android-fragments android-asynctask

我有一个片段活动A,它实现了两个片段B和C. 只需单击一个按钮,我就可以在片段B中运行一个函数来刷新来自互联网的一些数据。 刷新数据时,我想用片段B中的数据更新我的片段C(这是一个映射)。问题是片段B中的数据刷新是通过异步任务完成的

我的代码就像FragmentActivity A中那样。

...
fragmentB.RefreshData();
Output output = fragmentB.getOutput();
fragmentC.RefreshData(output);
...

因为fragmentB执行AsyncTask,当我正在执行.getOutput()时,代码还没有正确结束,因此在我的fragmentC中我触发了一个nullpointer异常。

我的问题是,我如何编码以便在检索输出并将其传递给fragmentC之前等待fragmentB中的任务结束?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,感谢GhostDerfel,我做了一些关于广播的研究,这是实施的解决方案。 我使用了LocalBroadcastManager,因为如果只在您的应用程序中完成,它们对于广播更安全。 有关如何使用它们的一个很好的例子: how to use LocalBroadcastManager?

我把接收器放在我的片段活动A中,以触发片段C上的函数 一旦onPostExecute发生

,我就将发件人放入我的片段B中

谢谢!