9

几个月来我一直在创建 android 应用程序,但我在Fragments.

Fragments应该是可重用的 UI 组件,但你让它们独立到什么程度?

Fragments我创建的其中一个ListFragment是可下载的视频。目前我已经实现了里面的所有方法Fragment,很少或没有调用 host 的方法ActivityFragment调用. _ Activity_Fragment

90% 的时间我发现这是实现它的最简单方法,但有时它就是行不通。

一个示例是用于删除我的ListFragment. 该对话框是DialogFragment附加到的,Activity但所有 UI 更新和删除方法都在ListFragment. 所以我最终只打电话DialogFragment给.ActivityListFragment

另一个例子是绑定到Service. 我是绑定ActivityService还是只绑定到FragmentActivity没有用,但是Service应该Fragment做所有启动和维护的工作Service?如果不是,则意味着所有对 the 的Fragments调用Service都必须通过 the,Activity因此 theFragment不再是孤立的。

我想知道我是否将独立的想法走得太远了,Fragment而是应该是最低限度的自给自足,实际上依赖于Activity托管它来完成所有繁重的工作?

谢谢你的帮助。

4

1 回答 1

5

一个非常有趣的问题!

我通常尽量让我的片段保持孤立。这意味着我通常不会让他们知道他们周围的任何事情,除了他们自己的活动。然后是活动的角色(如果你问我)为片段提供所需的一切。

实际上,这意味着我的片段永远不会拥有自己的内容,例如内容提供者或自定义 DAO。活动(或 - 上帝保佑 - 应用程序)拥有它,然后只向片段提供数据的子集,如游标、域对象或适配器。

这也意味着当一个片段修改一个项目时,它必须要求活动保持更改。或者如果要删除一个项目,片段必须要求 Activity 显示该操作的相应 UI(是的,技术上可以让片段显示另一个片段,但我通常会尽量避免它) .

当涉及到服务并与它们绑定时,我真的不知道该建议什么,因为它实际上取决于服务及其正在做什么。如果您在服务中从 Internet 下载新内容,那么让 Activity 处理绑定似乎是正确的(因为根据之前的讨论,它是需要保存数据的 Activity)。另一方面,如果您正在根据您的隔离数据(例如解密文件等)计算特定的东西,那么让片段处理该部分可能是有意义的。

从更大的角度来看,人们很快就会意识到,如上所述的设置将产生相当多的回调接口,因为每个片段都需要为其活动建立契约。因此,对于较小的项目,有时我会覆盖我自己的片段范式。

我也忍不住注意到,在使用片段时,我的应用程序在其架构中往往非常面向 MVC。我把它留给你和任何未来的读者来决定这是好事还是坏事;-)

干杯

于 2013-05-28T20:44:59.923 回答