6

我想通过 Bundle 意图使用 Parceler 将模型数据传递到另一个活动中。我的问题是如何使用 android 中的 MVP 架构将数据从 Presenter 传递到 View 层以显示在另一个活动中?

4

1 回答 1

12

这当然是可能的。假设您的 Activity 实现了您的 View 界面,您将在界面中有一个方法,例如:

void startNextActivity(MyData data);

然后在活动中:

@Override
void startNextActivity(MyData data) {

    // create bundle
    // send intent
}

在演示者中:

view().startNextActivity(myData);

但是我不建议你这样做

我认为在做 MVP 时应该谨慎使用相当多的经典Android 模式。这包括诸如onActivityResult在活动/片段之间使用Bundle.

为了使事情尽可能地解耦和干净,活动应避免与其他活动交谈,演示者不应与其他演示者交谈等。如果您需要从另一个活动中的一个活动访问数据,请将其发送到模型以进行持久化。下一个 Activity 将由其 Presenter 发送此数据,该 Presenter 将从模型中获取该数据。

下图提供了更好的概览:

MVP图

在启动下一个 Activity 时,它们不会将详细信息作为 Bundle 的一部分传递,而是保留在模型中以供下一个 Activity 加载。

于 2017-01-31T20:02:44.080 回答