我是.NET移动开发人员,因为我开始使用android,我注意到我可以存储视图的事件处理程序的唯一方法是通过活动文件或创建一个类来保存所有这些事件监听器。有人可以建议我能做的最好的方法来减少混乱并相应地存储所有事件处理程序吗?
答案 0 :(得分:1)
有点主观的“混乱”取决于您实施事件处理程序的效率以及应用程序的复杂程度。
例如,我在SO上看过示例代码,如...
button1.setOnClickListener(new View.OnClickListener {...});
button2.setOnClickListener(new View.OnClickListener {...});
button3.setOnClickListener(new View.OnClickListener {...});
在每种情况下,每个人Button
的匿名监听器通常执行非常相似的功能(启动活动1,启动活动2 ....)。最简洁的方法是在View.OnClickListener
本身上实施Activity
,然后使用......
button1.setOnClickListener(this);
...(等等每个Button
)然后获取传递给侦听器的View
的资源ID,以识别被点击的内容和需要完成的操作。令我惊讶的是有多少人没有这样做。
至于创建一个单独的类(或多个类)来容纳监听器,这取决于你正在进行多少活动。单独维护听众有两个缺点。
首先,如果你不使用Activity
使用匿名监听器或直接实现监听器的模型,那表明你将拥有一大堆活动(可能会在某些时候扩展)使用你的'助手'类听众。每次扩展Activity
时,您都需要确保更新单独的课程以应对它 - 可能是一种看不见的问题,您可能会想到Activity
的新内容通用'监听器无法处理。
第二个潜在的问题在于Android的工作方式(取决于您的应用)。 Android Activity
是模块化的 - 如果它显示特定格式的照片或图像或文档,那么它应该尽可能独立。有一个单独的类与众多的监听器意味着一个非常简单的Activity
意味着做一个非常简单的任务最终加载一个类(或类)的膨胀,其中包含一大堆不是的监听器相关的。
坚持简单 - 优化每个Activity
的听众并使其保持独立。如果您觉得有任何重复,请定义您自己的基类并从那里扩展。
答案 1 :(得分:0)
目前尚不清楚你想得到什么结果。据我了解,您不希望创建任何Activity子类来处理UI事件。如果是这样,那真的很奇怪 - 你怎么会在一个活动中显示那些观点呢?