单击片段内的事件

时间:2014-08-15 12:01:51

标签: android android-activity onclick fragment onclicklistener

我有一个片段的信息中心。每次单击按钮时,仪表板将被另一个片段替换。

单击侦听器在仪表板片段类中实现。但我在某处读到,更好的方法是让侦听器进入活动。这是真的吗?为什么呢?

如果是,我可以更改它,我只需要将仪表板片段中的方法复制到活动中,并使用XML onClick功能。

1 个答案:

答案 0 :(得分:1)

老实说,我无法想到为活动中的片段声明onClick侦听器的原因。

首先,片段被认为是模块化的。也许您将此用于此活动或那个活动。将onClicks放在活动硬编码中两者之间的关系。您的活动正在搜索片段,该片段并不总是存在,并且除了该活动之外,您的片段无法工作。

其次,声明你点击的地方确定了隐含引用的位置。如果你在活动中声明它,它可以调用活动函数,但它不知道它来自哪个片段。它如何引用片段函数/数据?当然有精心设计的解决方法,但为什么呢?

另一方面,如果将它放在片段中,它可以调用片段函数。它与片段具有相同的生命周期(附加到片段视图),因此隐式引用不会创建内存泄漏(无论如何都是这样)。如果你想调用活动,只需使用getActivity并将其强制转换为你的接口或子类。