1

我正在开发一个显示列表的小应用程序,当单击某个项目时,它将打开一个包含项目详细信息的辅助屏幕。我想实现MVP作为我的这个应用程序的架构,我一直在努力找出如何做到这一点,当我有单个活动与2个片段在具有两个(或多个)碎片的单个活动上实施MVP

我的想法是每个片段有一个演示者,这意味着活动将有两个演示者实例,因为活动需要实例化它们(至少从我看过的这个链接的例子项目https://github.com/googlesamples/android-architecture)...

然后出现了一些问题,当点击列表中的某个项目时,回调被发送给第一个演示者,但此时谁负责打开第二个片段?主持人互相交谈吗?我应该通过这项活动来完成吗?有点丢失..

一直在四处寻找单个活动的例子与多个片段实施MVP,但找不到像这样的东西。

(是的,它可以以其他方式完成,但应用程序的目的是学习与多个片段在一个活动中实现MVP)

感谢任何帮助! 谢谢!

回答

0

有可能有很多方法来实现MVP。主要我们使用3件事。 - 查看 - 演示者 - 模态

在创建这些东西之前,您应该清楚自己的屏幕工作。

例如,如果你想要一个登录屏幕。 首先创建活动的结构(使用接口)。比如你的主持人和观点将包含 例如。

public interface LoginPresenter { 
    void validateCredentials(String username, String password); 
    void onDestroy(); 
} 

视图结构:

public interface LoginView { 
void showProgress(); 

void hideProgress(); 

void setUsernameError(); 

void setPasswordError(); 

void navigateToHome(); 
} 

现在,这些都需要在您的逻辑部分驻留在您的视图类(活动/片段)和主持人来执行类。

现在关于您的查询。

这意味着活动将有两个演示者实例。 不,你的活动不应该要求有多个主持人。它已经打开片段引用(由findfragmentby id或tag)。

谁负责打开第二个片段?

你可以从任何一个Activity/fragment中打开它。 如果活动使用getfragmentsupportManager 如果片段使用getfragmentManager

注:欲了解更多信息按照这个混帐例子。 https://github.com/antoniolg/androidmvp

+0

感谢您的回答,大部分的MVP介绍我已经知道了(关于接口等)..你有一个git的例子,但我看不到任何链接..也许你忘了添加它? ,关于不应该有多个演示者的活动....好吧,如果每个片段都有一个演示者,并且活动就是实例化他们的活动(在几个项目中可以看到这一点) ,该活动将不会有多个演示者? –

+0

活动是实例化片段的人,例如,如果您有登录片段作为您的第一个片段,活动将实例化它。所有登录工作流程都将由您的片段视图,模式和演示者处理。 当成功登录第一个片段时会打开另一个片段。 与此同时,你有两个片段的公共变量,你可以把它放在活动上,这样两个片段都可以访问它。 ((MainActivity)getActivity())。commonVariable –

相关问题