Android: 创建 bundle 的新实例并在 mvp 中传递给 dagger 中的 intent

Android: Create new instance of bundle and pass to intent in dagger in mvp

我想在我的项目中使用 MVP 和 dagger。 鉴于我有这个方法,在这个方法中我将把一些对象传递给演示者:

@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. 当我使用 dagger 时,我在演示者中创建新对象(IntentBundle)是真的吗?

  2. 如何在我的场景中使用匕首?这意味着在模块 class?

  3. 中创建新的 intent 和 bundle 实例

MVP 模式的要点是将业务逻辑与其视图分开。在您的 Presenter 中不要有任何 android 框架相关代码是一个常见的好习惯(这里您的 Presenter 依赖于 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 实现并注入到您的演示者中的接口。