Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建基本MVP Android应用程序_Java_Android_Mvp - Fatal编程技术网

Java 创建基本MVP Android应用程序

Java 创建基本MVP Android应用程序,java,android,mvp,Java,Android,Mvp,此应用程序有一个带有EditText、Textview和按钮的用户界面。该按钮将复制用户在EditText对象中键入的文本,并将其放置在TextView中 MVP和MVVM似乎是当今最流行的设计模式 本着学习其中一种架构设计模式的精神,我如何使这个最基本的应用程序适应MVP架构模式 在开始任何一段代码之前,我肯定会推荐一些研究。如今,Android提供了许多有趣的应用程序架构,尽管选择最适合你的应用程序架构并不简单,但这一过程会让你学到很多东西 一个很好的起点是谷歌官方的GitHub。不仅有许多

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

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


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

在开始任何一段代码之前,我肯定会推荐一些研究。如今,Android提供了许多有趣的应用程序架构,尽管选择最适合你的应用程序架构并不简单,但这一过程会让你学到很多东西

一个很好的起点是谷歌官方的GitHub。不仅有许多不同的体系结构,如MVP、MVVM、MVI,而且每个体系结构中都有一些有趣的变体

另一方面,Android正在做一项伟大的工作,试图简化这项工作,创建大量的库。这就是所谓的Android架构组件,并开始使用和采用它们的模式

最后,如果您仍然决定使用MVP,那么在您的示例中,您必须做以下几件事:

  • 您的
    MainActivity
    (视图)应该实现该视图的约定(例如:
    MainViewContract
  • 在该视图中,您应该获得对
    MainPresenter
    的引用,并传递实现
    MainViewContract
    的视图的引用
  • 主演示者还将执行合同(例如:
    mainportercontract
  • 基本上,您需要的所有连接都已建立。
    MainPresenter
    将负责业务处理视图的输入和输出。在您的案例中,输入和输出非常简单:

    输入(
    MainPresenterContract
    ):

    • void copyText(字符串textocopy)
    输出(
    MainViewContract
    ):

    • void showCopiedText(字符串copiedText)

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

    上绘制文本。您为什么选择MVP而不选择[architecture component]()。向presenter类说再见并进行调整您可以尝试架构组件的示例我有点想回答这个问题,但我忘了为什么要投否决票?
    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);
        }
    }