我应该在 MVP 架构中的什么地方进行 activity 导航?
Where should I do activity navigation in MVP architecture?
我有一个 Android 项目是使用 MVP 架构构建的。我不太确定的一件事是,例如,当我想在单击按钮后导航到另一个 activity 时,我是否应该放置
startActivity(intent)
在 view 组件内还是在 presenter 组件内?
您必须在视图组件中执行此操作,所有 ui 相关活动都必须在打开 new activity
或 replacing fragment
并请求 permissions
等视图中执行。
让我进一步解释一下,假设我们 activity 中有一个按钮,所以我们将在演示器中编写其逻辑,即调用演示器方法 buttonClick()
如果我们想打开另一个 activity 根据我们的逻辑,我们简单地调用 getMvp.openMainActivity(); where as openMainActivity()
将成为视图的一部分。
这是一个基于 MVP 架构的基本登录方法示例 activity。
我的 Login Presenter MVP 界面有
void onServerLoginClick(String email, String password);
我的登录视图MVP界面有
void openMainActivity();
我的 Login Presenter 实现是
@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();
}
}
我的登录视图 class 实现是
@Override
public void openMainActivity() {
Intent intent = MainActivity.getStartIntent(LoginActivity.this);
startActivity(intent);
finish();
}
希望这能帮助您理解这个概念。
我有一个 Android 项目是使用 MVP 架构构建的。我不太确定的一件事是,例如,当我想在单击按钮后导航到另一个 activity 时,我是否应该放置
startActivity(intent)
在 view 组件内还是在 presenter 组件内?
您必须在视图组件中执行此操作,所有 ui 相关活动都必须在打开 new activity
或 replacing fragment
并请求 permissions
等视图中执行。
让我进一步解释一下,假设我们 activity 中有一个按钮,所以我们将在演示器中编写其逻辑,即调用演示器方法 buttonClick()
如果我们想打开另一个 activity 根据我们的逻辑,我们简单地调用 getMvp.openMainActivity(); where as openMainActivity()
将成为视图的一部分。
这是一个基于 MVP 架构的基本登录方法示例 activity。 我的 Login Presenter MVP 界面有
void onServerLoginClick(String email, String password);
我的登录视图MVP界面有
void openMainActivity();
我的 Login Presenter 实现是
@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();
}
}
我的登录视图 class 实现是
@Override
public void openMainActivity() {
Intent intent = MainActivity.getStartIntent(LoginActivity.this);
startActivity(intent);
finish();
}
希望这能帮助您理解这个概念。