我已经创建了Android应用程序几个月了,我在使用它时遇到了麻烦Fragments
.
Fragments
应该是可重用的UI组件,但是你能让它们在多远的程度上独立存在?
其中的Fragments
创建[我已是一个ListFragment
可下载的视频.目前我已经实现Fragment
了调用主机的方法很少或没有实现的所有方法Activity
.在Fragment
调用Activity
了一些小东西,但一切都像在外部存储下载文件并发现它们是由完成Fragment
.
90%的时间我发现它是实现它的最简单的方法,但有时它只是不起作用.
一个例子是用于删除我的视频的确认对话框ListFragment
.该对话框是DialogFragment
附加到Activity
但所有UI更新和删除方法都在内部ListFragment
.所以我最终DialogFragment
打电话给Activity
刚刚打电话给ListFragment
.
另一个例子是绑定到a Service
.难道我绑定Activity
到Service
或者仅仅是Fragment
?在Activity
没有用的Service
,而是一个Fragment
应该做的启动和维护的所有工作Service
?如果不是这意味着所有的Fragments
呼叫Service
必须通过,Activity
所以Fragment
不再是孤立的.
我想知道我是不是把独立的想法放得太远了,是Fragment
不是应该是最低限度的自足,实际上依靠Activity
托管它来解决所有繁重的问题?
谢谢你的帮助.
一个非常有趣的问题!
我通常尽量让我的碎片保持孤立.这意味着我通常不会让他们知道他们周围的任何事情,除了他们自己的活动.然后,活动的角色(如果你问我)提供片段所需的东西.
实际上,这意味着我的片段从不拥有自己的内容,如内容提供者或自定义DAO.活动(或 - 上帝禁止 - 应用程序)拥有它,然后仅向片段提供数据的子集,如游标,域对象或适配器.
这也意味着当片段修改项目时,它必须要求活动保持更改.或者如果要删除一个项目,片段必须要求活动显示该操作的相应UI(是的,技术上可以让片段显示另一个片段,但我通常尽量避免它) .
当涉及到服务和绑定它们时,我真的不知道该建议什么,因为它真的取决于服务和它正在做什么.如果您在服务中从互联网上下载新内容,那么似乎已经纠正让活动处理绑定(因为根据之前的讨论,它是需要保存数据的活动).另一方面,如果你根据你的孤立数据(例如解密文件等)来计算特定的东西,那么它可能会让片段处理那个部分.
从更大的角度来看,很快就会意识到,如上所述的设置将产生相当多的回调接口,因为每个片段需要与其活动建立合同.因此,对于较小的项目,有时我会覆盖我自己的片段 - pardigms.
我也不禁注意到,在使用片段时,我的应用程序往往在其架构中面向MVC.我留给你和任何未来的读者来决定它是好还是坏;-)
干杯