Android: должен ли я добавить пустой конструктор к фрагменту, используемому в ViewPager
Я делаю макет, похожий на 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;
}
}
Так требуется ли включать конструктор во фрагмент или я могу просто опустить конструктор?
2 ответов
компилятор Java автоматически добавляет конструктор no-args по умолчанию (который является "пустым конструктором", на который вы ссылаетесь в вопросе) к любому классу, который не имеет конструктора.
следующий пустой класс:
public class A {
}
эквивалентно следующему классу с конструктором no-args с пустым телом:
public class A {
public A() {
}
}
вы должны явно добавить конструктор no-args только при включении другого конструктора с одним или несколькими аргументами, потому что в этом случае компилятор не добавит.
Если вы не добавляете конструктор, вызов конструктора будет ссылаться на супер конструктор (то же самое, что и создание пустого конструктора). Но если вы создадите любой другой конструктор (не желаемый с фрагментами, делайте все, что хотите сделать в onCreate, ваш фрагмент не всегда будет создан с ним, иногда система будет создавать экземпляр фрагмента и будет вызываться пустой конструктор), чем вам нужно предоставить также пустой.