我应该在MVP架构中的哪里进行活动导航?

时间:2018-03-08 02:56:03

标签: android mvp android-mvp

我有一个使用MVP架构构建的Android项目。我不太确定的一件事是,当我想点击一个按钮后导航到另一个活动时,我应该放置

startActivity(intent) 

视图组件内部或演示者组件内部?

1 个答案:

答案 0 :(得分:3)

您必须在视图组件中执行此操作必须在开放式new activityreplacing fragment等视图中执行所有与ui相关的活动,并要求permissions

让我进一步解释一下,我们在活动中只有一个按钮,因此我们将在演示者中编写其逻辑,即调用presenter方法buttonClick(),如果我们想在逻辑之后打开另一个活动,我们只需调用{ {1}}将成为观看的一部分。

以下是基于MVP架构的基本登录活动的示例方法。 我的登录Presenter MVP界面有

getMvp.openMainActivity(); where as openMainActivity()

我的登录视图MVP界面

  void onServerLoginClick(String email, String password);

我的登录Presenter实现

void openMainActivity();

我的Login View类实现是

@Override
    public void onServerLoginClick(String email, String password) {
        //validate email and password
        if (email == null || email.isEmpty()) {
            getMvpView().onError(R.string.empty_email);
            return;
        }
        if (!CommonUtils.isEmailValid(email)) {
            getMvpView().onError(R.string.invalid_email);
            return;
        }
        if (password == null || password.isEmpty()) {
            getMvpView().onError(R.string.empty_password);
            return;
        }
        getMvpView().showLoading();


        User u   = getDataManager().matchUser(new User(2l,"",email,password,"",""));
        if (u==null){
            getMvpView().onError("No user found");
            getMvpView().hideLoading();


        }else {
            getDataManager().updateUserInfo(
                    "",
                    u.getId(),
                    DataManager.LoggedInMode.LOGGED_IN_MODE_SERVER,
                    u.getName(),
                    u.getEmail(),
                    "",
                    password);
            getMvpView().hideLoading();
            getMvpView().openMainActivity();
        }




    }

希望这有助于您理解这个概念。