【问题标题】:Creating a Basic MVP Android App创建一个基本的 MVP Android 应用程序
【发布时间】:2018-05-19 13:56:11
【问题描述】:
public class MainActivity extends AppCompatActivity {
    //text
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View view) {
        //Grab input
        EditText editText = findViewById(R.id.editText);
        String message = editText.getText().toString();
        //Throw input onto the label
        TextView destinationText = findViewById(R.id.destinationText);
        destinationText.setText(message);
    }
}

这个应用程序有一个用户界面,其中包含一个 EditText、一个 Textview 和一个按钮。该按钮将复制用户在 EditText 对象中键入的文本并将其放置在 TextView 中。

MVP 和 MVVM 似乎是当今最流行的设计模式。

本着学习其中一种架构设计模式的精神,我如何才能使这个最基本的应用程序适应 MVP 架构模式?

【问题讨论】:

标签: java android mvp


【解决方案1】:

我绝对建议在开始任何代码之前进行一些研究。如今,Android 提供了许多有趣的应用架构,尽管选择最适合您的应用架构并非易事,但这段旅程会让您学到很多东西。

Google 在 GitHub 上的官方 architecture sample projects 是一个很好的起点。不仅有许多不同的架构,例如 MVP、MVVM、MVI,而且每个架构中都有一些有趣的变体。

另一方面,Android 正在努力简化创建大量库的过程。这就是所谓的 Android 架构组件,here you have some of their samples 开始使用并采用它们的模式。

最后,如果您仍然决定使用 MVP,那么在您的示例中您需要做一些事情:

  1. 您的MainActivity(视图)应执行该视图的合同(例如:MainViewContract)。
  2. 在该视图中,您应该获得对 MainPresenter 的引用,并通过实现 MainViewContract 的视图的引用。
  3. MainPresenter 还将执行合同(例如:MainPresenterContract)。

基本上,您需要的所有连接都已建立。 MainPresenter 将负责处理视图输入和输出的业务。在您的情况下,输入和输出非常简单:

输入 (MainPresenterContract):

  • void copyText(String textToCopy);

输出 (MainViewContract):

  • void showCopiedText(String copiedText);

当用户单击按钮时,您将通过演示者本地实例发送消息copyText。然后,演示者将得到它并执行调用showCopiedText 的输出。由于主视图MainActivity 实现了MainViewContract,您将在视图的本地方法中收到输出消息,您只需在Textview 上绘制文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多