我有一个 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/