Java 在两个片段之间发送数据

Java 在两个片段之间发送数据,java,android,android-fragments,arraylist,Java,Android,Android Fragments,Arraylist,因此,我有一个活动,它从服务器获取位置,并在列表视图中向用户显示位置的详细信息。我还有一个活动,将所有这些位置都放在谷歌地图上。一切都很好。现在,我想把它们放到一个带有选项卡的ViewPager中。为此,我将它们都转换为片段。当我使用activities时,我使用Intent从ListActivity向MapActivity发送了一个ArrayList来绘制点 我的问题是:既然我使用的是片段,那么如何将ArrayList从一个片段发送到另一个片段呢?我正在使用Intent,但无法再使用此方法,因

因此,我有一个活动,它从服务器获取位置,并在列表视图中向用户显示位置的详细信息。我还有一个活动,将所有这些位置都放在谷歌地图上。一切都很好。现在,我想把它们放到一个带有选项卡的ViewPager中。为此,我将它们都转换为片段。当我使用activities时,我使用Intent从ListActivity向MapActivity发送了一个ArrayList来绘制点

我的问题是:既然我使用的是片段,那么如何将ArrayList从一个片段发送到另一个片段呢?我正在使用Intent,但无法再使用此方法,因为我不会开始新的活动。我可以再次从服务器检索所有数据,但我不希望使用此方法,因为它不必要。此外,ListView中的数据将随着用户滚动而增长,因此每次获取数据时,我都需要在另一个片段上更新它


关于如何将ArrayList发送到另一个活动并在之后立即更新它,有什么想法吗?谢谢。

有很多方法可以做你想做的事情-短期内最省力的方法通常是使用otto之类的消息总线

我认为这样做的逻辑方法是在活动中保存或检索数据,并使用setArguments方法将数据传递给片段。查看此帖子:


将ArrayList放入setArguments捆绑包中的棘手部分是,无论ArrayList是什么类型,都需要是可打包的

我会在片段中使用接口在活动中设置侦听器。在界面中,您可以将您可能需要的任何信息传递回“活动”,并从支持库中使用

谷歌搜索可以找到很多例子,但这里是一个又一个的问题。

您可以通过活动、同一实例(可能是注入事件总线的单例)或LocalBroadcastManager进行通信。我投第二票,因为广播使用意图,我不想把整个arrayList放入其中一个。人们向我推荐奥托的原因是:在活动中放置位置并列出数据。片段总是在onAttach中获取父活动,片段可以从中请求父活动提供数据。这是的副本,如果您计划使用依赖项注入机制,这似乎是一个不错的示例:答案如下: