8

我正在做一个布局,类似于 Google play 的。我正在使用需要片段的 ViewPager。我现在有点困惑,因为有些网站说片段需要一个空的构造函数,但 developer.android.com 上的示例不包含构造函数。那里的代码是这样的:

public static class DemoObjectFragment extends Fragment {
    public static final String ARG_OBJECT = "object";

    @Override
    public View onCreateView(LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        // The last two arguments ensure LayoutParams are inflated
        // properly.
        View rootView = inflater.inflate(
                R.layout.fragment_collection_object, container, false);
        Bundle args = getArguments();
        ((TextView) rootView.findViewById(android.R.id.text1)).setText(
                Integer.toString(args.getInt(ARG_OBJECT)));
        return rootView;
    }
}

那么是否需要在片段中包含构造函数或者我可以省略构造函数?

4

2 回答 2

10

Java 编译器会自动将默认的无参数构造函数(即您在问题中提到的“空构造函数”)添加到任何不具有构造函数的类。

以下空类:

public class A {
}

等效于以下具有空主体的无参数构造函数的类:

public class A {

    public A() {
    }

}

仅当包含具有一个或多个参数的另一个构造函数时,才需要显式添加无参数构造函数,因为在这种情况下,编译器不会为您添加它。

于 2013-03-07T16:52:01.270 回答
1

如果您不添加任何构造函数,则调用构造函数将引用超级构造函数(与创建空构造函数相同)。但是,如果您要创建任何其他构造函数(不希望使用 Fragments,在 onCreate 中执行您想做的任何事情,您的片段将不会总是用它实例化,有时系统会实例化片段并且将调用空构造函数)而不是你还需要提供一个空的。

于 2013-03-07T16:50:46.170 回答