问题标签 [android-mvp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
200 浏览

android - 在 MVP 模式中,Presenter 应该是 Android 应用程序的活动方式还是功能方式

在使用 MVP 模式构建 Android 应用程序时,我想知道我应该使用演示者活动方式还是功能方式?

Activity-wise 意味着,演示者的数量等于活动的数量。

功能方面意味着,对于每个功能,应该使用单独的 Presenter。

0 投票
1 回答
1122 浏览

android - MVP 交互者和用例的关系

我最近一直试图从架构的角度来理解 MVP 架构中交互器和用例之间的关系。我的疑问是关于部件之间的通信以及符合 MVP 标准的内容。

问题是我见过很多相互矛盾的流程图。其中一些似乎每个演示者都有一个交互者,另一些似乎每个演示者有多个交互者(每个交互者拥有多个相互关联的用例,例如所有与用户相关的案例),而其他似乎没有完全使用交互器,只与演示者直接交流用例。

我的主要(也是相当菜鸟)问题:从 MVP 的角度来看,让一个演示者与多个交互者进行通信是否可以,或者每个演示者应该只是一个交互者?在某些情况下,特定视图需要来自各种不同模型的数据,那么有人将如何处理这些数据?

为了问题的完整性,我附上了一个演示者持有两个交互者的流程图,并说明我的观点需要处理不同模型结构的演示者(一个用户属于一家公司,但假设我也需要显示只能通过 CompanyInteractor 获得的其他公司信息,并且在 UserInteractor 上复制没有任何意义)。如果“每个演示者一个交互者”是答案,那么每个演示者的单个交互者是否应该与演示者需要的所有不同的、不相关的用例进行通信?

谢谢

在此处输入图像描述

PS:对于流程图的混乱,使用draw.io *耸耸肩* 3分钟抱歉。

0 投票
1 回答
141 浏览

java - MVP 和多种行为

我一直在尝试使用and制作一个简单的记事本应用程序(我的第一个应用程序)。我已经理解了大部分内容,但是如果我有多种行为,我会有点迷茫。我会解释的。 我的项目层次结构是这样的: 点击这里MVPdagger

  • MainActivity - 活动类,包含一个列表视图。
  • MainPresenter - 接口,包含一个设置容器方法和一个刷新方法
  • MainPresenterImpl - 演示者的实现
  • MainView - MainActivity 的接口(用于 mvp)
  • Note_Container - 包含 NoteHandler 以加载保存笔记,创建/存储适配器并可以进行更改
  • 忽略noteactivity它是空的
  • di 文件夹用于依赖注入
  • 模型只有一个包含两个字符串的音符类
  • NoteHandler - 包含 NoteRepository 并在抛出异常时处理它们。
  • NoteRepository - 使用 gson 库保存和加载文件中的笔记。

在解释了所有这些之后,您应该(可能)已经了解了项目的工作原理(随意批评层次结构)。
现在我想添加一个创建笔记的按钮。我将只添加侦听mainactivity器并将其重定向到演示者......
但是演示者会处理代码以添加新注释(启动新意图等)还是应该创建一个新类来独立处理这玩意儿?
如果我想在将来添加更多按钮,例如删除所有注释或启动帮助对话框,我应该为每个按钮创建一个处理代码的类吗?
我怎样才能组织这样的事情?

0 投票
2 回答
2436 浏览

android - 在具有两个(或多个)片段的单个活动上实现 MVP

我正在开发一个显示列表的小型应用程序,当单击一个项目时,它会打开一个包含项目详细信息的辅助屏幕。我想实现 MVP 作为我的这个应用程序的架构,当我有一个包含 2 个片段的活动时,我一直在努力弄清楚如何做到这一点。

出现了一些问题,例如当单击列表中的项目时,会向第一个演示者发送回调,但此时,谁负责打开第二个片段?主持人会互相“交谈”吗?我应该通过活动来完成吗?

一直在寻找具有多个实现 MVP 的片段的单个活动的示例,但还没有找到类似的东西。

(是的,可以通过其他方式完成,但该应用程序的目的是学习在具有多个片段的单个活动上实现 MVP)

感谢任何帮助!谢谢!

0 投票
2 回答
626 浏览

java - 如何使用retrofit2 + rxjava2 mvp android

如何在android中使用retrofit2 + rxjava2

我想了解发送参数到服务器并使用retrofit2 + rxjava2 从服务器获取数据

你能给我举个例子吗?谢谢!

0 投票
1 回答
38 浏览

java - 如何设计一个可以在数据下载完成时从服务器传递数据的类

我是 Android 开发的新手,最近正在学习如何正确使用 MVP 模式。

现在我面临一个棘手的问题,希望可以从这里得到一些有用的建议或解决方案。

首先,这是我的主持人

如您所见,我正在尝试将使用 OKHttp 库的部分提取到一个类(我称之为数据管理器)中,我希望它可以处理服务器和客户端之间的所有任务。但事情是这样的,当我试图将结果从数据管理器传递给演示者时,由于异步机制,我得到了 NullPointException。

我想知道当数据完成下载后,如何将来自服务器的异步数据传递给演示者。

这是我理想的数据管理器,我知道这可能看起来很愚蠢,但我认为这可以让我的问题更清楚。

我已经阅读了一些可能可以解决我的问题的文章,但仍然没有得到任何好的答案。也许我认为我使用了错误的关键字。希望你们能给我一些想法或解决方案来帮助我或激励我。

OKhttp 库的 PS 版本是 3.7.0

0 投票
1 回答
5613 浏览

android - 干净的架构。主持人的工作是什么?

我一直在阅读一些关于干净架构的文章,以及如何在 android 中实现它。我看到了显示其 Android 实现的示例应用程序。此外,我还进行了一次关于 Android 上的清洁架构的精彩演讲

所以,我有点理解大多数概念,但我想对某些事情进行一些澄清。

根据我的理解,

  • View 层是处理 UI 和框架相关内容的外层
  • 演示者是视图的直接通信者,它接受用户输入,并通过将其传递给用例层或交互器层来执行基于此的某些用例。
  • 交互者执行用例,将其返回给演示者发送的回调,
  • Presenter 再次将此结果转换为视图可理解的数据结构(ViewModel)并将其传递回视图。

我没有列出有关存储库等内层的更多详细信息,因为我的问题与上述步骤有关

在这里,presenter 的唯一工作是充当 UseCases 和 UI 之间的中介,作为数据调度员吗?

它是否只对视图模型进行用例模型转换,反之亦然?

输入验证逻辑依赖于哪一层?它可以在演示者内部吗?例如,如果我们采用一个注册过程的小用例,

一旦用户输入详细信息并单击注册按钮,数据发送给演示者,是不是像

  • 如果存在任何错误,Presenter 会验证输入值并通知视图
  • 如果值正确,则将其转换为用例模型,并执行某些用例,一旦交互器给出结果,再次转换为视图模型,将其发送到视图。

第二个问题是,谁控制导航?视图还是演示者还是用例?

谁决定下一步去哪里?

例如 - 考虑一个登录过程的用例,用户将在其中输入凭据并单击确定。

登录成功后,

  • 如果用户电子邮件未通过验证,请转到电子邮件验证屏幕
  • 如果用户配置文件未完成,请设置配置文件,然后仅转到主屏幕
  • 如果用户是新用户,则显示新优惠屏幕,否则直接转到主屏幕

那么,谁负责在接下来的屏幕上做出这些决定呢?是演示者,它相应地决定和导航视图吗?还是用例处理程序负责通知演示者下一个状态是什么?

对不起,问题太长了,但我只是想详细说明我目前的理解。提前致谢

0 投票
0 回答
484 浏览

android - 将房间持久性添加到模块时出错

这就是我的 gradle 的样子,我已经注释掉了问题行(更新了完整的 gradle 代码)

数据层

领域层

表示层

我正在使用 MVP 并将每一层分成不同的模块。在我的数据层中,当我尝试导入房间库时出现错误

“错误:模块 'Umbrella:data-layer:unspecified' 依赖于一个或多个 Android 库,但它是一个 jar”

我不完全理解这意味着什么,我可以采取哪些步骤来调查和解决这个问题?

0 投票
0 回答
256 浏览

android - Dagger 2.11,为改造和 rxjava 创建新模块时遇到困难

查看一些示例,我能够使用 Dagger 2.11 来处理活动和片段,但是,在使用 Retrofit + RxJava 创建用于调用 Web 服务的模块时,我没有取得任何进展。对不起,如果这是一个重复的问题,我在这里没有找到解决方案。

按照下面的我的应用程序代码:

应用程序.java

应用组件.java

应用模块.java

0 投票
1 回答
814 浏览

android - 为什么只有最新的订阅者在使用 Kotlin 和 RxMVP 的 Android 上的 RxJava 中获得 onNext 事件

鉴于以下情况:

AView具有 aCheckBox和多个EditTexts提供使用Jake Wharton 的 RxBinding
的访问权限,如下所示ViewObservables

对于EditTexts(其中三个,用于用户名、密码和电子邮件)和

为了CheckBox

Presenter特点是一种方法,EditText它很简单

和一种方法CheckBox

所有这些方法都被调用,onCreate一切Presenter都按预期工作。

现在的问题:我在验证用户输入
的新函数中添加了一个:Presenter

每当我更改EditText两者的内容Subscriptions(用于 的内容EditText和添加的组合内容observeInputFields)时,都会按预期接收事件。
但是,如果我点击CheckBox 最后一个Subscription接收事件,具体取决于onCreate.

或者

我不明白为什么这种奇怪的事情只发生CheckBox在 s 而不是EditTexts。这非常令人困惑......

非常感谢任何帮助,因为我目前陷入困境:(

谢谢!