问题标签 [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.
android - 在 MVP 模式中,Presenter 应该是 Android 应用程序的活动方式还是功能方式
在使用 MVP 模式构建 Android 应用程序时,我想知道我应该使用演示者活动方式还是功能方式?
Activity-wise 意味着,演示者的数量等于活动的数量。
功能方面意味着,对于每个功能,应该使用单独的 Presenter。
android - MVP 交互者和用例的关系
我最近一直试图从架构的角度来理解 MVP 架构中交互器和用例之间的关系。我的疑问是关于部件之间的通信以及符合 MVP 标准的内容。
问题是我见过很多相互矛盾的流程图。其中一些似乎每个演示者都有一个交互者,另一些似乎每个演示者有多个交互者(每个交互者拥有多个相互关联的用例,例如所有与用户相关的案例),而其他似乎没有完全使用交互器,只与演示者直接交流用例。
我的主要(也是相当菜鸟)问题:从 MVP 的角度来看,让一个演示者与多个交互者进行通信是否可以,或者每个演示者应该只是一个交互者?在某些情况下,特定视图需要来自各种不同模型的数据,那么有人将如何处理这些数据?
为了问题的完整性,我附上了一个演示者持有两个交互者的流程图,并说明我的观点需要处理不同模型结构的演示者(一个用户属于一家公司,但假设我也需要显示只能通过 CompanyInteractor 获得的其他公司信息,并且在 UserInteractor 上复制没有任何意义)。如果“每个演示者一个交互者”是答案,那么每个演示者的单个交互者是否应该与演示者需要的所有不同的、不相关的用例进行通信?
谢谢
PS:对于流程图的混乱,使用draw.io *耸耸肩* 3分钟抱歉。
java - MVP 和多种行为
我一直在尝试使用and制作一个简单的记事本应用程序(我的第一个应用程序)。我已经理解了大部分内容,但是如果我有多种行为,我会有点迷茫。我会解释的。
我的项目层次结构是这样的:
点击这里MVP
dagger
- MainActivity - 活动类,包含一个列表视图。
- MainPresenter - 接口,包含一个设置容器方法和一个刷新方法
- MainPresenterImpl - 演示者的实现
- MainView - MainActivity 的接口(用于 mvp)
- Note_Container - 包含 NoteHandler 以加载保存笔记,创建/存储适配器并可以进行更改
- 忽略noteactivity它是空的
- di 文件夹用于依赖注入
- 模型只有一个包含两个字符串的音符类
- NoteHandler - 包含 NoteRepository 并在抛出异常时处理它们。
- NoteRepository - 使用 gson 库保存和加载文件中的笔记。
在解释了所有这些之后,您应该(可能)已经了解了项目的工作原理(随意批评层次结构)。
现在我想添加一个创建笔记的按钮。我将只添加侦听mainactivity
器并将其重定向到演示者......
但是演示者会处理代码以添加新注释(启动新意图等)还是应该创建一个新类来独立处理这玩意儿?
如果我想在将来添加更多按钮,例如删除所有注释或启动帮助对话框,我应该为每个按钮创建一个处理代码的类吗?
我怎样才能组织这样的事情?
android - 在具有两个(或多个)片段的单个活动上实现 MVP
我正在开发一个显示列表的小型应用程序,当单击一个项目时,它会打开一个包含项目详细信息的辅助屏幕。我想实现 MVP 作为我的这个应用程序的架构,当我有一个包含 2 个片段的活动时,我一直在努力弄清楚如何做到这一点。
出现了一些问题,例如当单击列表中的项目时,会向第一个演示者发送回调,但此时,谁负责打开第二个片段?主持人会互相“交谈”吗?我应该通过活动来完成吗?
一直在寻找具有多个实现 MVP 的片段的单个活动的示例,但还没有找到类似的东西。
(是的,可以通过其他方式完成,但该应用程序的目的是学习在具有多个片段的单个活动上实现 MVP)
感谢任何帮助!谢谢!
java - 如何使用retrofit2 + rxjava2 mvp android
如何在android中使用retrofit2 + rxjava2
我想了解发送参数到服务器并使用retrofit2 + rxjava2 从服务器获取数据
你能给我举个例子吗?谢谢!
java - 如何设计一个可以在数据下载完成时从服务器传递数据的类
我是 Android 开发的新手,最近正在学习如何正确使用 MVP 模式。
现在我面临一个棘手的问题,希望可以从这里得到一些有用的建议或解决方案。
首先,这是我的主持人
如您所见,我正在尝试将使用 OKHttp 库的部分提取到一个类(我称之为数据管理器)中,我希望它可以处理服务器和客户端之间的所有任务。但事情是这样的,当我试图将结果从数据管理器传递给演示者时,由于异步机制,我得到了 NullPointException。
我想知道当数据完成下载后,如何将来自服务器的异步数据传递给演示者。
这是我理想的数据管理器,我知道这可能看起来很愚蠢,但我认为这可以让我的问题更清楚。
我已经阅读了一些可能可以解决我的问题的文章,但仍然没有得到任何好的答案。也许我认为我使用了错误的关键字。希望你们能给我一些想法或解决方案来帮助我或激励我。
OKhttp 库的 PS 版本是 3.7.0
android - 干净的架构。主持人的工作是什么?
我一直在阅读一些关于干净架构的文章,以及如何在 android 中实现它。我看到了显示其 Android 实现的示例应用程序。此外,我还进行了一次关于 Android 上的清洁架构的精彩演讲
所以,我有点理解大多数概念,但我想对某些事情进行一些澄清。
根据我的理解,
- View 层是处理 UI 和框架相关内容的外层
- 演示者是视图的直接通信者,它接受用户输入,并通过将其传递给用例层或交互器层来执行基于此的某些用例。
- 交互者执行用例,将其返回给演示者发送的回调,
- Presenter 再次将此结果转换为视图可理解的数据结构(ViewModel)并将其传递回视图。
我没有列出有关存储库等内层的更多详细信息,因为我的问题与上述步骤有关
在这里,presenter 的唯一工作是充当 UseCases 和 UI 之间的中介,作为数据调度员吗?
它是否只对视图模型进行用例模型转换,反之亦然?
输入验证逻辑依赖于哪一层?它可以在演示者内部吗?例如,如果我们采用一个注册过程的小用例,
一旦用户输入详细信息并单击注册按钮,数据发送给演示者,是不是像
- 如果存在任何错误,Presenter 会验证输入值并通知视图
- 如果值正确,则将其转换为用例模型,并执行某些用例,一旦交互器给出结果,再次转换为视图模型,将其发送到视图。
第二个问题是,谁控制导航?视图还是演示者还是用例?
谁决定下一步去哪里?
例如 - 考虑一个登录过程的用例,用户将在其中输入凭据并单击确定。
登录成功后,
- 如果用户电子邮件未通过验证,请转到电子邮件验证屏幕
- 如果用户配置文件未完成,请设置配置文件,然后仅转到主屏幕
- 如果用户是新用户,则显示新优惠屏幕,否则直接转到主屏幕
那么,谁负责在接下来的屏幕上做出这些决定呢?是演示者,它相应地决定和导航视图吗?还是用例处理程序负责通知演示者下一个状态是什么?
对不起,问题太长了,但我只是想详细说明我目前的理解。提前致谢
android - 将房间持久性添加到模块时出错
这就是我的 gradle 的样子,我已经注释掉了问题行(更新了完整的 gradle 代码)
数据层
领域层
表示层
根
我正在使用 MVP 并将每一层分成不同的模块。在我的数据层中,当我尝试导入房间库时出现错误
“错误:模块 'Umbrella:data-layer:unspecified' 依赖于一个或多个 Android 库,但它是一个 jar”
我不完全理解这意味着什么,我可以采取哪些步骤来调查和解决这个问题?
android - Dagger 2.11,为改造和 rxjava 创建新模块时遇到困难
查看一些示例,我能够使用 Dagger 2.11 来处理活动和片段,但是,在使用 Retrofit + RxJava 创建用于调用 Web 服务的模块时,我没有取得任何进展。对不起,如果这是一个重复的问题,我在这里没有找到解决方案。
按照下面的我的应用程序代码:
应用程序.java
应用组件.java
应用模块.java
android - 为什么只有最新的订阅者在使用 Kotlin 和 RxMVP 的 Android 上的 RxJava 中获得 onNext 事件
鉴于以下情况:
AView
具有 aCheckBox
和多个EditText
s提供使用Jake Wharton 的 RxBinding
的访问权限,如下所示View
Observables
对于EditText
s(其中三个,用于用户名、密码和电子邮件)和
为了CheckBox
其Presenter
特点是一种方法,EditText
它很简单
和一种方法CheckBox
:
所有这些方法都被调用,onCreate
一切Presenter
都按预期工作。
现在的问题:我在验证用户输入
的新函数中添加了一个:Presenter
每当我更改EditText
两者的内容Subscriptions
(用于 的内容EditText
和添加的组合内容observeInputFields
)时,都会按预期接收事件。
但是,如果我点击CheckBox
最后一个Subscription
接收事件,具体取决于onCreate
.
或者
我不明白为什么这种奇怪的事情只发生CheckBox
在 s 而不是EditText
s。这非常令人困惑......
非常感谢任何帮助,因为我目前陷入困境:(
谢谢!