我有一个片段活动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中的任务结束?
谢谢!
答案 0 :(得分:0)
好的,感谢GhostDerfel,我做了一些关于广播的研究,这是实施的解决方案。 我使用了LocalBroadcastManager,因为如果只在您的应用程序中完成,它们对于广播更安全。 有关如何使用它们的一个很好的例子: how to use LocalBroadcastManager?
我把接收器放在我的片段活动A中,以触发片段C上的函数 一旦onPostExecute发生
,我就将发件人放入我的片段B中谢谢!