Различия и использование onCreate(), onCreateView() и onActivityCreated() во фрагментах
Каковы различия между onCreate()
, onCreateView()
, а также onActivityCreated()
фрагменты и для чего они будут использоваться каждый?
2 ответа
OnCreate():
onCreate()
метод в Fragment
называется после Activity
"s onAttachFragment()
но до этого Fragment
"s onCreateView()
,
В этом методе вы можете назначить переменные, получить Intent
дополнения и все остальное, что не включает иерархию View (т.е. неграфические инициализации). Это потому, что этот метод может быть вызван, когда Activity
"s onCreate()
не завершена, и поэтому попытка получить доступ к иерархии представления может привести к сбою.
onCreateView ():
После onCreate()
называется (в Fragment
), Fragment
"s onCreateView()
называется. Вы можете назначить свой View
переменные и делать любые графические инициализации. Вы должны вернуть View
из этого метода, и это основной вид интерфейса, но если ваш Fragment
не использует макеты или графику, вы можете вернуть null
(происходит по умолчанию, если вы не переопределяете).
onActivityCreated ():
Как следует из названия, это называется после Activity
"s onCreate()
завершено. Называется после onCreateView()
и в основном используется для окончательной инициализации (например, для изменения элементов пользовательского интерфейса).
Подводить итоги...
... все они называются в Fragment
но называются в разное время.
onCreate()
вызывается первым для выполнения любых неграфических инициализаций. Далее вы можете назначить и объявить любой View
переменные, которые вы хотите использовать в onCreateView()
, После этого используйте onActivityCreated()
делать какие-либо финальные инициализации, которые вы хотите сделать, как только все будет завершено.
Если вы хотите просмотреть официальную документацию по Android, ее можно найти здесь:
- onCreate()
- onCreateView()
- onActivityCreated()
Здесь также есть несколько иные, но менее разработанные вопросы / ответы здесь, о переполнении стека:
Для тех, кто ищет краткий, наглядный ответ:
https://hanaskuliah.wordpress.com/2015/12/07/android-5-development-part-6-fragment/
А также,
onActivityCreated() - устарело
onActivityCreated()
устарела как фрагменты версии 1.3.0-alpha02
Метод onActivityCreated() устарел. Код, касающийся представления фрагмента, должен выполняться в onViewCreated() (который вызывается непосредственно перед onActivityCreated()), а другой код инициализации должен находиться в onCreate(). Чтобы получить обратный вызов, особенно когда действие onCreate() завершено, LifeCycleObserver должен быть зарегистрирован в жизненном цикле действия в onAttach() и удален после получения обратного вызова onCreate().
Подробную информацию можно найти здесь