了解片段活动

时间:2012-07-29 23:51:02

标签: java android android-fragments android-fragmentactivity

我有应用程序,它只是一个计时器,在主要活动中有一大堆特殊方法。这很好用,没有任何问题。现在,我有它工作,我试图将它包含在一个更复杂的应用程序中,我将通过片段在许多地方插入计时器。

我应该在片段活动中包含所有特殊方法吗? IE:

public class Timer_fragment extends android.support.v4.app.Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.timer_frag, container, false);
    }
    //SHOULD I insert my special methods here?
}

或者我应该将它们包含在我的主要内容中?

我问,因为我已经尝试了两种方式,并且片段活动方式在java中给了我错误,但是将它们放在我的main中会在运行时给出错误。基本上我有一个作为独立应用程序运行良好的计时器,但我正在尝试将其转换为片段,以便我可以将其插入我的应用程序中的多个位置。

“特殊方法”的例子: 我在布局中查看并根据计时器上输入的新数字进行更新。这些方法要求视图在使用之前要充气。

注意:我遇到的运行时错误是nullPointerExceptions。

1 个答案:

答案 0 :(得分:2)

片段背后的想法是它是一个活动的可恢复部分(即片段),可以在其他活动中使用,甚至可以在同一个活动中使用,但是可以添加或不添加其他片段。

例如,在Gmail应用中,收件箱中所有电子邮件的列表都是一个片段,电子邮件的实际内容是另一个片段。在横向模式下的平板电脑上,都会显示。但是,纵向模式的手机只会同时显示两个碎片中的一个。

因此,每个Fragment都应该封装使用该Fragment所需的所有功能和UI组件。这意味着所有“特殊”方法(如夸大Fragment的视图XML)都应该在Fragment中进行。

利用Fragment的Activity(或者Activity)应该只需要使用FragmentManager(或类似的方法)将Fragment添加到Activity的布局中。片段的父Activity也应该处理片段与其他组件(如其他活动,片段或线程)之间的通信。