Android: создайте новый экземпляр пакета и перейдите к намерению в кинжале в MVP - PullRequest
0 голосов
/ 19 ноября 2018

Я хотел бы использовать 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. Правда ли, что я создаю новый объект (Intent и Bundle) в презентере, когда использую кинжал?

  2. Как я могу использовать кинжал в моем сценарии? Это значит создать новый экземпляр намерения и связки в классе модуля?

1 Ответ

0 голосов
/ 20 ноября 2018

Смысл паттерна MVP состоит в том, чтобы отделить бизнес-логику от ее представления.Общепринятой практикой является не иметь никакого кода, связанного с платформой Android, в вашем докладчике (здесь ваш докладчик зависит от Context, Intent и Bundle от платформы Android).

В вашем случае выне следует создавать ваши Intent и Bundle в презентаторе, поскольку он принадлежит вашему представлению (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 и внедренный в докладчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...