java - Android MVP - 我应该从哪里阅读 Textview?
问题描述
用户单击按钮后,我想阅读活动的 TextViews 中的内容,然后从演示者那里调用一个方法以根据发送给它的信息获得返回。
但是我不知道演示者是否应该自己获取这些数据,或者当我调用他的一种方法时我是否应该从 Activity 类传递给他(这意味着在 Activity 类中的 TextFields 中获取数据,然后发送当我调用 Presenter 方法时将数据作为参数)。
我已经尝试了这两种方法,但我不知道哪种方法更有条理。
解决方案
在使用 MVP 架构模式时,您应该有对Presenter
on the的引用View
(在本例中, the View
is your Activity
)。他们有非常不同的职责:
- 你
View
应该尽可能地愚蠢,即它应该只负责向用户显示任何数据并收集用户输入。 - 您
Presenter
应该负责处理显示在 上的所有数据View
并充当 和 之间的View
中间人Model
。换句话说,对于每一个可能的用户输入,都应该有一个Presenter
能够处理它的方法。
例如,在您的情况下,View
负责将 TextView 的内容处理到Presenter
. 然后,Presenter
必须将这些内容传递给Model
,它会根据您的业务逻辑对其进行处理。处理完成Model
后,将结果返回给Presenter
,然后准备在上显示的内容View
。当内容准备好时,Presenter
然后将其发送到View
.
了解了所有这些,您应该能够回答您的问题。它会是这样的(伪代码):
class MyActivity
{
// you should inject this
Presenter myPresenter;
TextView myTextView;
...
myPresenter.doStuff(myTextView.getText().toString());
}
推荐阅读
- android - 应用程序因发布 apk 崩溃 [Android Studio]
- java - 如何在@InitBinder 验证之前执行代码
- perl - 在 find() 中使用 OR 子句
- reactjs - 将数据从 Link 传递到组件
- maven - 如何将父 POM 指定给项目的子模块?
- node.js - 在 JAM Stacks 中使用短代码
- node.js - 将 CloudFlare 上的 URL 转发到特定端口
- dialogflow-es - 我可以将我的 Google Home 用作简单的网络爬虫来满足一些基本需求吗?
- python - 为什么在 Python 的 help('modules'') 中使用引号
- machine-learning - 监督学习分类