Несколько фрагментов (просмотров) и докладчиков с одним действием (MVP) - PullRequest
0 голосов
/ 25 июня 2018

Я занимаюсь разработкой приложения для Android с использованием шаблона MVP, который использует Firebase Services и Firebase Authentication.

В модуле аутентификации у меня есть три фрагмента (представления): а) фрагмент заставки, б) фрагмент входа и в) фрагмент регистрации. У каждого фрагмента есть свой ведущий.

Когда пользователь нажимает кнопку «Вход» на начальном экране, как мне вызвать фрагмент «Вход в систему» ​​и создать экземпляр его презентатора и модели?

Согласно примерам архитектуры Android - https://github.com/googlesamples/android-architecture, фрагмент (представление) и презентатор создаются в действии, но примеры не показывают, как обрабатывать несколько фрагментов в одном действии аутентификации.

Я нашел похожий вопрос - ( Реализация MVP для одного действия с двумя (или несколькими) фрагментами ) при переполнении стека, но не смог найти удовлетворительный ответ.

Я новичок в Android MVP, поэтому, пожалуйста, помогите мне, спасибо.

1 Ответ

0 голосов
/ 02 июля 2018

В вашем сценарии вы можете разбить ваш модуль аутентификации следующим образом:

  1. Модель (класс сетевого подключения)
  2. Вид (фрагмент деятельности / заставки / входа / фрагмента регистрации)
  3. Presenter (Класс, который обрабатывает бизнес-логику и склеивает модель и представление)

Интерфейс просмотра:

interface View {
    //Show Introduction screen
    void onIntro();

    //Show User sign in screen
    void onUserSignIn();

    //Show User sign up screen
    void onUserSignUp();

    //User logged in i.e. either signed in or signed up
    void onLogin();
}

Интерфейс модели:

interface Model {
    //on Login / Signup successful
    void onLogin();
}

Интерфейс Presenter:

interface Presenter {
    // Perform sign in task
    void performSignIn();

    // Perform sign up task
    void performSignUp();
}

Деятельность реализует это представление и реализует следующие методы:

class AuthenticationActivity extends Activity implement View {

    Presenter presenter;

    public void onCreate() {
        // Initialize Presenter as it has all business logic
        presenter = new Presenter(view, model);
    }

    public void onIntro(){
       // initialize a new intro fragment 
       // and add / replace it in activity 
    }

    public void onUserSignIn(){
       // initialize a new sign in fragment 
       // and add / replace it in activity
    }

    public void onUserSignUp() {
       // initialize a new user sign up fragment 
       // and add / replace it in activity
    }

    void onLogin() {
       // do what you want to do. User has logged in
    }
}

Это даст вам основную идею, например, как спроектировать Login MVP в Android и как работает flow.

...