2016-10-25 4 views
0

Я смотрю на документации Фрагмент из Google Android FragmentsStatic против Нестатические Фрагменты

Я использую Fragments созданный Android Studio, который не статическую Для примера:

public class FormsFragment extends Fragment 

Почему Документация Google объявляет их статическими? Что такое рассуждения?

public static class DetailsFragment extends Fragment 
+0

Ключевое слово static в объявлении класса верхнего уровня ничего не значит. http://stackoverflow.com/questions/7486012/static-classes-in-java –

+0

@RomanSamoylenko, так в чем смысл объявлять их статическими на верхнем уровне? Они просто чувствуют, что с нами болтают? – Alan

+0

Когда я пытаюсь объявить класс верхнего уровня 'static', я получаю предупреждение о компиляторе. Таким образом, либо вы обнаружили ошибку в документации, либо фрагмент действительно находится в другом классе ... –

ответ

1

Используя фрагменты, вы должны следовать контрактам, данным самим Android. Поскольку структура управляет вашей деятельностью и жизненным циклом фрагмента, она должна иметь возможность создавать эти классы. Это делается с помощью общедоступного конструктора по умолчанию. Также требуется объявить класс общедоступным.

Итак, если вы определяете фрагмент как «нормальный» класс, вам не нужно рассматривать что-либо еще. Если вы определяете его как внутренний класс другого класса, то должен объявить его статическим. В противном случае класс будет иметь неявный конструктор с параметром типа внешнего класса и, следовательно, не будет публичным конструктором по умолчанию для создания нового экземпляра вашего фрагмента.

+0

Вы могли бы предоставить пример использования, в котором вы бы вложили фрагмент ? Я всегда использую их как высший класс. – Alan

+0

В полученном классе нет никакой разницы. Это просто разработчики предпочитают хранить его в том же файле класса, что и внешний класс. – tynn

1

Ваш вопрос кажется, что вы классифицируете фрагменты двух типов. Статический и нестатический, но это не так, существует два типа фрагмента Static и Dynamic. Ключевое слово static не означает, что это статический фрагмент. ключевое слово, вероятно, означает, что этот класс фрагмента был вложенным внутренним классом, к которому можно получить доступ только к классу верхнего уровня (возможно, к активности).

Смежные вопросы