Фрагмент без активности

Мне задали вопрос на собеседовании: может ли фрагмент существовать без активности? Я искал ответы, но не получил правильного ответа и объяснения. Может кто-нибудь помочь?

Ответ 1

Да, вы можете сделать это в любом месте:

new YourFragment();

Поскольку фрагменты должны иметь конструктор без параметров.

Однако его жизненный цикл не срабатывает до тех пор, пока он не будет прикреплен. Таким образом, onAttach, onCreate, onCreateView и т.д. Вызывается только тогда, когда он присоединен. Таким образом, большинство фрагментов ничего не делают до тех пор, пока они не будут прикреплены.

Ответ 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);

}