Android 将片段功能代码放在哪里?

Android 将片段功能代码放在哪里?,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,关于android开发中使用Fragments和Activitys的一般问题:动态加载到活动中的Fragments的功能代码的业务端在哪里?(即片段的OnClickListeners、OnCheckedChangedListeners、按钮逻辑方法……) 它们是属于片段类还是属于活动类?这可能取决于片段的功能有多少共同点,以及需要处理多少按钮,比如说按钮 我个人(这可能是最常见的做法)为每个片段分别处理onClick(…)事件,这意味着我让每个片段实现它自己的OnClickListener 此外

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


它们是属于
片段
类还是属于
活动
类?

这可能取决于
片段的
功能有多少共同点,以及需要处理多少按钮,比如说按钮

我个人(这可能是最常见的做法)为每个
片段分别处理
onClick(…)
事件,这意味着我让每个片段实现它自己的
OnClickListener


此外,当通过
活动处理所有内容时,可能并非所有对单击事件作出反应的组件都始终在内存中,并且可以通过
findViewById(…)
访问这些组件,取决于当前显示的片段以及用户界面的构建方式。

附加到片段的视图的所有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
MacActivity.getSupportMenuInflater()
的访问权,因此,构造当然也可以用于从底层活动中获取信息。

它们总是在片段类中,因为片段是android中的一种组件,我们可以重用它。如果我们将onclick和oncheckchanged放在活动中,那么重用该组件有什么意义

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

获取有关片段以及如何处理它们的基本信息 用于处理多窗格片段

这取决于:

若片段可以处理自给自足(完整)的逻辑,那个么该代码可以由片段处理。e、 g.点击呼叫电话号码

若片段具有特定于活动的UI,那个么您希望在活动中添加侦听器。 e、 g.掌握详细信息视图,如电子邮件客户端,在平板电脑上,用户单击标题片段1,其中包含电子邮件标题列表,然后单击活动中的处理程序可以在活动中显示详细片段2


在所有您想要保持片段可重用的地方。

在片段中。。。若片段可以和其他片段交互,那个么做一些交互接口,做实现这个接口的控制器类(为了简单起见,活动可以是控制器),并在控制器中进行交互。。。Fx你有ListFragment与goods做接口与方法goodSelected让这个片段有方法setOnGoodSelected。。。在fragment onListSelected中,您可以从接口调用goodSelected。。。现在活动可以实现这个接口了。。。还有一个