单个活动(MVP)的多个片段(视图)和演示者

时间:2018-06-25 04:22:25

标签: android firebase android-fragments mvp android-mvp

我正在使用使用Firebase服务和Firebase身份验证的MVP模式开发Android应用程序。

在身份验证模块中,我有三个片段(视图)-a)屏幕介绍片段,b)登录片段和c)注册片段。每个片段都有自己的演示者。

当用户单击简介屏幕中的“登录”按钮时,如何调用“登录片段”并实例化其演示者和模型?

根据Android体系结构示例-https://github.com/googlesamples/android-architecture,片段(视图)和演示者在活动中被实例化,但是示例未显示如何在一个身份验证活动中处理多个片段。

我在堆栈溢出时发现了类似的问题-(Implementing MVP on a single activity with two (or multiple) fragments),但找不到令人满意的答案。

我是Android MVP的新手,谢谢,谢谢。

1 个答案:

答案 0 :(得分:0)

在您的情况下,您可以将身份验证模块破坏为:

  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();
}

演示者界面:

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
    }
}

这将为您提供基本的想法,例如如何在Android中设计Login MVP以及流程如何工作。