关于使用Fragment
和Activity
进行android开发的一般性问题:功能代码的业务端在哪里动态加载到Activity中的Fragment
? (即片段的OnClickListener
s,OnCheckedChangedListener
s,按钮逻辑方法......)
他们会进入Fragment
班级,还是Activity
班级?
答案 0 :(得分:2)
附加到片段的视图的所有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的引用的原因是为了获得对支持菜单inflater mActivity.getSupportMenuInflater()
的访问权,因此构造当然也可以用于从基础活动中获取信息。
答案 1 :(得分:1)
这可能取决于Fragment's
功能有多少共同点,以及有多少,比如按钮,必须要处理。
我个人(并且可能是最常见的做法)分别为每个onClick(...)
处理Fragment
个事件,这意味着我让每个片段实现它自己的OnClickListener
。
此外,当通过Activity
处理所有内容时,可能并非所有对点击事件做出反应的组件都始终在内存中,并且可以通过findViewById(...)
到达,具体取决于当前哪个片段显示以及如何构建用户界面。
答案 2 :(得分:0)
它们总是在片段类中,因为片段是android中的一种组件,我们可以重用它。如果我们在活动中加入onclick和oncheckchanged那么重用该组件的含义是什么?
有关详细信息,请执行以下步骤:
答案 3 :(得分:0)
取决于:
如果片段可以处理自足(完成)的逻辑,那么该代码可以由片段处理。例如点击通话电话号码。
如果片段具有其操作特定于活动的UI,则您希望在活动中添加侦听器。 例如主要详细信息视图,如电子邮件客户端,平板电脑用户点击标题片段1,其中包含电子邮件标题列表,然后点击活动处理程序可以显示活动中的详细片段2。
总而言之,您希望保持片段可重复使用。