只是关于使用 Fragment
和 Activity
进行 android 开发的一般问题:动态加载到 Activity 中的函数代码的业务端在哪里Fragment
?(即片段的OnClickListener
s,OnCheckedChangedListener
s,按钮逻辑方法...
他们是上Fragment
班,还是Activity
班?
附加到片段的视图的所有 GUI 逻辑都应包含在片段本身中。
因此,片段应尽可能自包含。
但是,如有必要,您可以根据片段 GUI 交互对活动进行回调。这可以在片段中像这样轻松完成:
@Override
public void onAttach(Activity activity) {
if (!(activity instanceof SherlockFragmentActivity)) {
throw new IllegalStateException(getClass().getSimpleName()
+ " must be attached to a SherlockFragmentActivity.");
}
mActivity = (SherlockFragmentActivity) activity;
super.onAttach(activity);
}
在这种特定情况下,获得对SherlockFragmentActivity的引用的原因是获得对支持mActivity.getSupportMenuInflater()
菜单的访问,因此构造当然也可以用于从底层活动中获得信息。
这可能取决于Fragment's
功能有多少共同点,以及必须处理多少,比如按钮。
我个人(这可能是最常见的做法)为每个Fragment
分别处理onClick(...)
事件,这意味着我让每个片段实现它自己的OnClickListener
。
此外,当通过Activity
处理所有内容时,可能并非所有对点击事件做出反应的组件都始终在内存中,并且可以通过findViewById(...)
访问,具体取决于当前显示的片段以及您的用户界面的一般构建方式。
它们总是在片段类中,因为片段是Android中的一种组件,我们可以重用它。 如果我们在活动中放置 onclick 和 oncheckchange,那么重用该组件意味着什么?
有关的更多信息,请按照以下步骤操作:
链接 1 提供有关片段的基本信息以及如何处理它们用于处理多窗格片段的链接 2
片段的标准位点
这取决于:
如果片段可以处理自给自足(完整)的逻辑,那么该代码可以由片段处理。 例如,单击呼叫电话号码。
如果片段具有其操作特定于活动的 UI,则您希望在活动中添加侦听器。例如,像电子邮件客户端这样的主详细信息视图,在平板电脑上用户单击具有电子邮件标题列表的标题片段1,然后单击活动的处理程序可以在活动中显示详细信息片段2。
总之,您希望保持片段可重用。