1

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

我应该在我的片段活动中包含我所有的特殊方法吗?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。

4

1 回答 1

2

Fragment 背后的想法是,它是一个 Activity 的可重用部分(即片段),可以在其他 Activity 中使用,甚至可以在同一个 Activity 中使用,但可以添加或缺少其他 Fragment。

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

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

使用 Fragment 的 Activity(或多个 Activity)应该只需要使用 FragmentManager(或类似方法)将您的 Fragment 添加到 Activity 的布局中。Fragment 的父 Activity 还应处理 Fragment 与其他组件(如其他 Activity、Fragment 或线程)之间的通信。

于 2012-07-30T01:40:18.527 回答