我有一个带有列表视图的片段,用户可以选择该列表中的项目。每当至少有一个项目处于选定状态时,我想透露一个"删除" 父活动上的工具栏按钮。我是否只是从片段中提出一个事件来实现这个目标?
如何删除 - 活动或片段应该对此负责吗?无论哪种方式,活动都需要以某种方式要求片段进行删除,或要求它重新加载列表(如果活动进行删除)。
真正寻找这种活动/片段通信的最佳实践,并减少耦合(可能是接口也会起作用)。
对于第二个(相关的)问题,我的片段目前负责从数据库中检索列表的项目,但是在我读过的一本书中,它们显示了这样做的活动,然后通过片段的项目。每种方法的优缺点是什么?
答案 0 :(得分:2)
作为对所有子问题的回答,保持类松散耦合并使用EventBus
链接它们是理想的方法!
EventBus
允许组件之间的发布 - 订阅式通信,而不需要组件彼此显式注册(因此彼此了解)。它专门用于使用显式注册替换传统的Java进程内事件分发。
这使您可以无缝地将数据作为事件传递给多个类,并从多个其他类中侦听这些事件。要查看用法,请参阅此Answer