【问题标题】:Send data to Fragments after it's been downloaded with Async Http使用 Async Http 下载数据后将数据发送到 Fragments
【发布时间】:2015-04-20 09:20:26
【问题描述】:

我在 Activity 中解析 JSONAsync Http。一旦成功解析数据,我希望它对 Activity 所持有的两个片段都可用。一个片段是显示下载数据的ListView,另一个片段是显示数据的Google MapView - 这并不重要。

下载数据后:

@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
    // Data downloaded
}

我想将它发送给fragments 并用数据更新地图和ListView

所以我想以某种方式在这两个片段中实现某种侦听器,以侦听"onSuccess" 的发生,然后使用它检索到的数据。

因此,如果 onSuccess 发生在 Fragments 甚至实例化之前,它们将立即显示数据。如果没有,他们会等待。

有人可以帮我实现这个吗?我不知道具体该如何处理。

【问题讨论】:

  • ObserverObservable 可能是您问题的答案。

标签: android android-fragments android-async-http


【解决方案1】:

你有这些选择:

  • 使用 EventBus 并将数据发送到两个片段
  • 将数据存储在活动中,使用LocalBroadcasrManager并发送 广播将让片段知道数据已经 从片段下载和访问数据,即 ((MyActivity)getActivity()).getData();

【讨论】:

  • EventBus 方法是一种推荐的方法,使用 Google Guava。
  • 我用过 EventBus。谢谢!
【解决方案2】:

本地广播消息适合这种情况。

以下几点也会对您有所帮助。

  1. 获取数据后实例化片段并通过 setArgument(Bundle) 方法传递(如果响应获取是一次)
  2. 如果 onSucces() 中的数据定期出现,则实现您自己的方法来更新片段的 UI 并从 Activity.onSuccess(...) 方法调用实现的方法。

【讨论】:

    【解决方案3】:

    您可以为此使用 Handler ......您可以将所有数据放在 bundle 中并将其发送到处理程序并在您的片段中声明此处理程序并将此处理程序传递给您的异步类,,,,当你得到响应只是将消息发送到该处理程序.......

     Message msg =  new Message();
     Bundle bundle = new Bundle();
    
       bundle.putString("Test", "test value");
     msg.setData(bundle);
    
      handler.sendMessage(msg);
    
    
    //Handler in The UI Thread Retreieves The Data
    //And Can Update the GUI as Required
    
     private Handler handler = new Handler() {
      @Override
      public void handleMessage(Message msg) {
    
    Bundle bundle = msg.getData();
    
    //set data to your views here.........
    
    }
    
    };
    

    希望对你有帮助..

    Handler

    【讨论】:

    • 可以在地图和列表中显示的数据可能不适合通过 Bundle 发送,可能是数据已到达的 ping。
    • 如果是列表,您可以传递可序列化列表,也可以简单地传递 JSON 并在那里解析它......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    相关资源
    最近更新 更多