Android:创建bundle的新实例并将其传递给mvp中的匕首

时间:2018-11-19 14:22:18

标签: dagger-2 android-mvp

我想在我的项目中使用带有匕首的MVP。 鉴于我有此方法,并将此对象传递给演示者:

@Override
public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
    super.onLogin(user, cookie, sessionId, permissions);
    presenter.onLogin(user, cookie, sessionId, permissions);
}

这是我的主持人:

public class Presenter implements ILogin.LoginPresenter{

    private Context context;

    @Inject
    public Presenter(Context context) {
        this.context = context;
    }

    @Override
    public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
        Intent intent = new Intent(context,MainActivity.class);///?
        Bundle bundle = new Bundle();///?
        bundle.putString("USER", user.getUserName());
        intent.putExtras(bundle);
        context.startActivity(intent);
    }

我的模块什么都没有:

@Module
public class LoginModule {
}

我的问题:

  1. 使用匕首时,是否正在演示者中创建新对象(IntentBundle)?

  2. 如何在我的场景中使用匕首?这意味着在模块类中创建intent和bundle的新实例吗?

1 个答案:

答案 0 :(得分:1)

MVP模式的重点是将业务逻辑与其观点分开。演示者中不包含任何与Android框架相关的代码是一种常见的好习惯(这里的演示者取决于android框架中的ContextIntentBundle)。

对于您而言,您不应在演示者中创建IntentBundle,因为它们属于您的视图(MainActivity)。

您的onLogin函数如下所示:

@Override
public void onLogin(User user, Cookie cookie, UUID sessionId, List<Permission> permissions) {
    // whatever is your business logic
    view.showMainActivity(user);
}

其中view是由您的MainActivity实现并插入到演示者中的接口。