Названия методов управления фрагментами очень сбивают с толку даже инженеры Google на досках сообщений (см. Комментарии выше). Я сделал себе небольшую демонстрацию, чтобы понять, как все работает на самом деле. Вот мои выводы. Не стесняйтесь поправлять меня, если я ошибаюсь.
Чтобы изначально добавить фрагмент в действие, вы используете: getFragmentManager (). BeginTransaction (). Add (R.id.container, mFragment) .commit ().
Это связывает действие с фрагментом, а также связывает представление с фрагментом.
Вот итоговые события жизненного цикла и другие важные возвращаемые значения метода:
onAttach()
onCreate()
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
Чтобы удалить фрагмент из действия, вы используете: getFragmentManager (). BeginTransaction (). Remove (mFragment) .commit ().
Это удаляет любую связь с представлением или действием.
Вот итоговые события жизненного цикла и другие важные возвращаемые значения метода:
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
mFragment.getView() == null: true
mFragment.getActivity() == null: true
Я повторно добавил фрагмент сюда
Чтобы отделить добавленный фрагмент от действия, вы используете: getFragmentManager (). BeginTransaction (). Detach (mFragment) .commit ().
Это удаляет любую связь с представлением, но сохраняет связь с действием.
Вот итоговые события жизненного цикла и другие важные возвращаемые значения метода:
onPause()
onStop()
onDestroyView()
mFragment.getView() == null: true
mFragment.getActivity() == null: false
Чтобы повторно присоединить фрагмент, который был отсоединен от Activity, вы используете: getFragmentManager (). BeginTransaction (). Attach (mFragment) .commit ().
Это создает новое представление для связи с фрагментом и поддерживает связь действия.
Вот итоговые события жизненного цикла и другие важные возвращаемые значения метода:
onCreateView()
onViewCreated()
onActivityCreated()
onViewStateRestored()
onStart()
onResume()
mFragment.getView() == null: false
mFragment.getActivity() == null: false
Другие важные замечания: если вы отсоедините фрагмент, а затем попытаетесь добавить его снова, используя add (), а не attach (), ничего не изменится.
если вы попытаетесь добавить фрагмент, который был удален с помощью remove (), используя attach (), а не add (), похоже, ничего не изменится.
Когда getView () возвращает значение null, фрагмент все еще может иметь внутренние ссылки на последнее созданное представление. Это представление больше недействительно и не должно использоваться.
Fragment
это отдельно стоящий , егоonPause
,onStop
иonDestroyView
методы называются только (в таком порядке). С другой стороны, когдаFragment
будет удалена , ееonPause
,onStop
,onDestroyView
,onDestroy
иonDetach
методы называются (в указанном порядке). Аналогичным образом , когда прикрепления , тоFragment
«ыonCreateView
,onStart
иonResume
методы называются только; и когда добавление , чтоFragment
«ыonAttach
,onCreate
,onCreateView
,onStart
иonResume
методы называются (в указанном порядке).