在哪里放置Fragment功能代码?

时间:2014-02-19 19:32:08

标签: android android-fragments android-activity

关于使用FragmentActivity进行android开发的一般性问题:功能代码的业务端在哪里动态加载到Activity中的Fragment? (即片段的OnClickListener s,OnCheckedChangedListener s,按钮逻辑方法......)

他们会进入Fragment班级,还是Activity班级?

4 个答案:

答案 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那么重用该组件的含义是什么?

有关详细信息,请执行以下步骤:

Link 1了解有关片段的基本信息以及如何处理它们 Link 2用于处理多窗格片段

Standard site for fragment

答案 3 :(得分:0)

取决于:

如果片段可以处理自足(完成)的逻辑,那么该代码可以由片段处理。例如点击通话电话号码。

如果片段具有其操作特定于活动的UI,则您希望在活动中添加侦听器。 例如主要详细信息视图,如电子邮件客户端,平板电脑用户点击标题片段1,其中包含电子邮件标题列表,然后点击活动处理程序可以显示活动中的详细片段2。

总而言之,您希望保持片段可重复使用。