为Android应用程序定义MVP模式时出现问题

为Android应用程序定义MVP模式时出现问题,android,mvp,Android,Mvp,在过去的几个月里,我一直在Android上开发,我学到了一些东西,但我认为现在是时候开始做正确的事情了,所以我正在尝试实现MVP/MVC模式,在这种情况下,这是处理UI的最合适的模式 我读过很多文章和例子,但我仍然有一些疑问,很可能是因为我缺乏android的经验 一些作者将活动定义为演示者/控制器,而另一些人定义为视图,我认为活动应该作为演示者而不是视图工作,因为它具有保持状态和向用户呈现布局的自然能力,也许我错了,我希望有人能澄清这一点 如果我是正确的,那么视图应该是使用布局和绑定事件与演示

在过去的几个月里,我一直在Android上开发,我学到了一些东西,但我认为现在是时候开始做正确的事情了,所以我正在尝试实现MVP/MVC模式,在这种情况下,这是处理UI的最合适的模式

我读过很多文章和例子,但我仍然有一些疑问,很可能是因为我缺乏android的经验

一些作者将活动定义为演示者/控制器,而另一些人定义为视图,我认为活动应该作为演示者而不是视图工作,因为它具有保持状态和向用户呈现布局的自然能力,也许我错了,我希望有人能澄清这一点

如果我是正确的,那么视图应该是使用布局和绑定事件与演示者通信的不同类(活动),这就是我迷路的地方

我找不到一种方法来正确创建一个从视图扩展的类,该类使用布局来绑定事件并能够与演示者通信。我这样做的唯一方法是使用生成器对象,生成器通过充气器创建视图,并绑定事件。这是可行的,但是视图没有实现任何接口,这破坏了我的MVP模式

我想到的另一种方法是使用View作为android View对象的代理,但我不确定这是否是处理它的最佳方法

如果有人能给我指出正确的方向,我将不胜感激


谢谢你,很抱歉发了这么长的帖子

我有一些在其他环境下使用MVC的经验,在Android上开发了很多之后,我认为这一点都不简单

您可能会在活动中混合使用控制器和视图代码。它应该是一个控制器是的,但它确实处理了很多用户交互,如菜单、对话框等。。。要摆脱这种状况并不容易

我认为Android开发遵循不同的范式,这让我想起Django和他们称之为MVT的模型-视图-模板

所以我建议不要尝试严格遵守Android上的MVC。视图和控制器代码可以混合使用,但您的代码可以通过模块化方法保持可维护性。自定义视图或其他专用类在这方面会有很大帮助


在我看来,通过遵循框架的自然逻辑,而不是寻找学术性的MVC,您将节省大量时间。

如果您不介意意大利面代码和可能的内存泄漏的话。您可以做一些事情,比如将一个基本布局/视图绑定到活动。然后将首选视图加载到布局中。然后,视图的这个自定义类将把活动带入自身,以便它可以引用调用它的活动并与之通信。如果要切换视图,则只需将当前视图替换为另一个视图即可

碎片的原理是一样的,但我的方法只是堆混乱

所以在那之后,我坚持使用API&片段。它足够接近MVC结构,同时保持整洁


你可以试试我的方法,这仍然是一个很好的经验,因为它可以教你很多不该做的事情。另外,Map之类的东西在视图上也不起作用,以防万一你还没有弄明白:)

你能提供到目前为止你读过的MVC/MVP模式教程的链接吗?James,其中一些是,而且我在网上搜索时从github得到了一些项目。我用一个真实的例子(我的一个项目)证明了概念使用MVP,它看起来很好,工作很好,并且保持我的代码干净,我不明白你为什么说它不是straightforward@varholl这真的不是直截了当的,它已经让我困惑了好几天了