Мне задали вопрос на собеседовании: может ли фрагмент существовать без активности? Я искал ответы, но не получил правильного ответа и объяснения. Может кто-нибудь помочь?
Фрагмент без активности
Ответ 1
Да, вы можете сделать это в любом месте:
new YourFragment();
Поскольку фрагменты должны иметь конструктор без параметров.
Ответ 2
Он может существовать как объект в памяти (путем создания его с помощью new
), но он должен быть привязан к Activity, чтобы отображаться на экране, предполагая, что у него есть какой-либо пользовательский интерфейс (фрагменты не должны имеют пользовательский интерфейс).
Ответ 3
Фрагмент может существовать независимо, но для его отображения вам нужна помощь. Деятельность будет действовать как контейнер для фрагментов.
Ответ 4
A fragment
не обязано быть частью Activity layout
; вы можете также использовать fragment
без собственного UI
в качестве невидимого рабочего для Activity
, но его необходимо привязать к Activity
для отображения на экране.
Ответ 5
Android-приложение должно иметь Activity или FragmentActivity, которое обрабатывает фрагмент.
Фрагмент не может быть инициирован без Activity или FragmentActivity.
Ответ 6
Как только вы создаете экземпляр класса Fragment, он существует, но для того, чтобы он появился в пользовательском интерфейсе, вы должны присоединить этот фрагмент к действию, поскольку жизненный цикл фрагмента выполняется параллельно жизненному циклу действия. Без какого-либо вызова Activity onCreate() не будет никакого вызова для onAttach(), onCreate(), onCreateView() и onActivityCreated() фрагмента, и поэтому он не может быть запущен.
Ответ 7
Я прочитал ответ с наивысшим рейтингом, я не согласен, но Android уже обеспечивает создание независимого фрагмента без активности DialogFragment, которая расширяет фрагмент. если вы хотите, чтобы показ в полноэкранном режиме сначала расширяет DialogFragment, то
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_FRAME, android.R.style.Theme_Holo_Light);
}