Android在Fragments之间传递数据

Vol*_*myr 6 java mvp android android-fragments android-activity

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

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

1)我不想传递所有片段链,因为它们不需要这些数据.

2)如果将此数据存储在托管中Activity,则需要((SomeActivity)getActivity()).getUserData()Fragment类内部调用并将此数据传递给Presenter.

3)我选择了最后一种方法.我创建了单例UserData类.这是简单的POJO类.我正在创建UserData第一Fragment组所需数据的实例,而不是在最后使用它Fragment来检索数据并添加缺少的字段.

但我不知道接近单身正确的解决方案.因为我需要在用户转到另一个时清除单例实例Activity.如果有更好的解决方案?

编辑

我想到了EventBus.但我必须将数据从Fragment传递给Presenter.现在我UserData.getInstance()在内部调用并检索数据.我希望代码更优雅,也更正确.我要求听取更有经验的开发人员的意见,以便更好地使用.

k3b*_*k3b 2

我会用 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)
Run Code Online (Sandbox Code Playgroud)

由于模型位于 (CustomerRegistrationWorkflow)Activity 中,因此片段可以通过调用与模型进行通信

((ICustomerOwner) getActivity()).getCustomer()
Run Code Online (Sandbox Code Playgroud)