FragmentActivities与Fragments的角色/职责

时间:2011-12-01 17:09:03

标签: android

假设我有一个包含FragmentActivity,FragActivityA和FragActivityB两个实例的应用程序,以及两个ListFragments,FragA和FragB。

在纵向中,FragActivityA呈现FragA,并在选择时启动FragActivityB呈现FragB。

FragA应该为ListView实现OnItemClickListener(某些网络业务是在印刷时执行的)还是FragActivityA? FragA应该显示DialogFragment,还是应该回拨给FragActivityA来显示它?

在横向中,FragActivityA同时呈现FragA和FragB。现在,如果上面的答案是肯定的,那么FragActivityA需要包含大多数FragActivityB方法,复制大部分代码。如果答案为否,则FragA或FragB需要自己呈现和处理DialogFragments。

我正在寻找关于我应该在哪里编写大部分代码的一些指导(我的直觉是在片段中),但显示DialogFragments的片段对我来说似乎很奇怪。

1 个答案:

答案 0 :(得分:1)

  

假设我有一个包含FragmentActivity,FragActivityA和FragActivityB两个实例的应用程序,以及两个ListFragments,FragA和FragB。

我有一个应用程序,包含两个FragmentActivity,FragActivityA和FragActivityB实例,以及两个ListFragments,FragA和FragB。

哦,不,等等,你的意思并不是说我......: - )

  

FragA应该为ListView实现OnItemClickListener(某些网络业务是在按下时执行的)还是FragActivityA?

FragA应覆盖onListItemClick()。那时发生的事情取决于所涉及的业务逻辑。您指出“某些网络业务是在按下时执行的”,这听起来就像您向IntentService发送命令或可能产生AsyncTask。我目前的想法是,这些事情也会由FragA完成,虽然我对此并不那么自信,特别是因为我对你的应用程序了解不多。

  

FragA应该显示DialogFragment,还是应该回拨给FragActivityA来显示它?

理想情况下,都不是。设计您的UI以将用户锁定在活动的之外,而不是整个活动。 IOW,尽量减少对话框的使用。

无论如何,我的一般指导是片段处理所有限于片段本身范围(及其基础数据模型)的工作。超出多个片段的事件应该波及到活动,然后负责将事件传递给另一个现有片段(如果它由此活动加载)或者启动另一个活动。在MVC术语中,您的片段是您的控制器,其中活动处理片段之间的编排事件(因此,如果需要,可以在活动之间)。

  

现在,如果上面的答案是肯定的,那么FragActivityA需要包含大多数FragActivityB方法,复制大部分代码。

听起来他们应该继承一个实现共同逻辑的公共AbstractFragActivity