【问题标题】:Communicating big objects between several fragments/activities. Interfaces/EventBus best practices在几个片段/活动之间交流大对象。接口/EventBus 最佳实践
【发布时间】:2017-07-10 12:09:46
【问题描述】:

所以我有一个非常复杂的数据模型,它包含我从大约 500 行 XML 中解析的所有数据。我也有两个活动,他们都有自己的浏览器,有 3-5 个片段。

该应用程序的目的是提供一个用户界面来配置所述 XML 文件。 我现在想做的是:

  • 将对象从活动传递到每个片段
  • 从对象数据更新 UI(Edittexts/Seekbars/Switches)
  • 让用户通过修改数据。用户界面输入
  • 将对象传回保存片段的活动
  • 将对象序列化为 xml 并将其发布到服务器

我读到的关于这个主题的大多数主题都相当老了~2-4年,建议用接口来做。 这样做,我不是必须在活动中为每个片段实现一个接口吗?

有没有更有效的方法? 或者是否有除 EventBus 之外的任何其他库可以使片段/活动/后台线程之间的通信更容易?

干杯

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

    Dias,你可以创建保存所有数据的 AppDataManager 类。这个类就像一个单例。然后在切换活动和片段期间,您可以通过 AppDataManager 类设置和获取数据。

    示例:

    AppDataManager.java

    public class AppDataManager {
    private static final AppDataManager ourInstance = new AppDataManager();
    
    private String name;
    private AppDataManager() {
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    
    public static AppDataManager getInstance() {
        return ourInstance;
    }}
    

    在您的活动或片段集数据中,如下所示,

      AppDataManager appDataManager = AppDataManager.getInstance();
                appDataManager.setName("User1");
    

    在您的 Activity 或 Fragment 中获取如下数据,

     AppDataManager appDataManager = AppDataManager.getInstance();
                Log.d(TAG," ===>"+appDataManager.getName());
    

    【讨论】:

      猜你喜欢
      • 2019-11-20
      • 1970-01-01
      • 2016-01-19
      • 2012-12-24
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多