java - Android 在 Fragment 之间传递数据

标签 java android android-fragments android-activity mvp

我有一个 Activity和 5 Fragment的。第一名Fragment用户输入电话号码。最后(第五)Fragment我需要显示这个电话号码,输入其他字段并将所有数据发送到服务器。对于每个 Fragment我正在使用单独的 Presenter(MVP)。

如何将数据从第一个 fragment 传递到最后一个 fragment ?

1) 我不想遍历所有 fragment 链,因为它们不需要这些数据。

2) 如果将此数据存储在主机中 Activity比我需要打电话 ((SomeActivity)getActivity()).getUserData()里面Fragment类并将此数据传递给 Presenter。

3) 我选择了最后一种方法。我创建了单例 UserData 类。这是一个简单的 POJO 类。我正在创建 UserData 的实例在第一个Fragment设置需要的数据,然后在最后一次使用它 Fragment检索数据并添加缺失的字段。

但我不知道单例的方法是否正确。因为当用户转到另一个 Activity 时我需要清除单例实例. 有没有更好的解决方案?

编辑

我想到了 EventBus。但是我必须将数据从 Fragment 传递给 Presenter。现在我调用UserData.getInstance()内部呈现和检索数据。我希望代码更优雅也更正确。我想听听更有经验的开发人员的意见,什么更好用。

最佳答案

我会用 ModellViewPresenter 的方式来做

class CustomerModel {
    String phoneNumber
}

interface ICustomerOwner {
    CustomerModel getCustomer()
}

class CustomerRegistrationWorkflowActivity extends Activity implements ICustomerOwner {
    CustomerModel getCustomer()
    ...
}

class CustomerContactDataFragment // fragment1 where you edit the phone number.

class CustomerRegistrationSummaryFragment // fragment5 showing all data plus submit button)

由于模型存在于 (CustomerRegistrationWorkflow)Activity 中, fragment 可以进行通信 通过调用模型

((ICustomerOwner) getActivity()).getCustomer()

关于java - Android 在 Fragment 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36419609/

相关文章:

java - 这段代码是否可以从数组中打印出随机字符串?

android - 应用程序小部件中的 setShadowLayer?

java - 将从 Oracle Java 切换到 OpenJDK 以避免从 2019 年 1 月起支付工作费用

java - 文件未找到异常,相同目录存在

java - 如何避免在策略模式中使用 java 和泛型进行未经检查的强制转换

java - 安卓|获取文件 (.zip) 并保存

android - Wifi 使用改造和 okhttp 阻止来 self 的应用程序的网络调用

android - 如何在 Android 中更改按钮点击选项卡?

android - viewPager 背景颜色对我的图像的影响

android - ViewPager 安卓 :NullPointerException: Attempt to invoke virtual method