我希望通过使用Parceler和Bundle intent将Model数据传递到另一个活动中。我的问题是,如何在Android中使用MVP架构将Presenter层中的数据传递到View层以在另一个活动中显示?
我希望通过使用Parceler和Bundle intent将Model数据传递到另一个活动中。我的问题是,如何在Android中使用MVP架构将Presenter层中的数据传递到View层以在另一个活动中显示?
这是完全有可能的。假设您的 Activity 实现了 View 接口,那么您将在接口中拥有一个类似于以下方法的方法:
void startNextActivity(MyData data);
然后在活动中:
@Override
void startNextActivity(MyData data) {
// create bundle
// send intent
}
而在 Presenter 中:
view().startNextActivity(myData);
然而,我不建议您这样做。
我认为,在使用 MVP 模式时,应该谨慎使用一些经典的 Android 模式,包括 onActivityResult
和使用 Bundle
在 Activity / Fragment 之间传递数据等。
为了保持尽可能解耦和干净的状态,Activity 应避免与其他 Activity 交互,Presenter 不应与其他 Presenter 交互等。 如果您需要在另一个 Activity 中访问来自一项 Activity 的数据,则将其发送到模型以进行持久化。 下一个 Activity 将通过其 Presenter 接收此数据,后者将从模型中获取它。
下面的图表提供了更好的概述:
与其在启动下一个 Activity 时作为 Bundle 的一部分传递详细信息,不如将其保存在模型中以供下一个 Activity 加载。