Intereting Posts
GetImageResource () Android. Это возможно? Использовать shareContent Facebook sdk в Android-сообществе для совместного использования Ошибка MediaRecorder при остановке записи Как использовать команду поиска adb в пакетном режиме Как распознать конкретную сборку apk, даже если пользовательское обновление apk в Google Play Как установить тег для фрагмента в Android Avcodec_find_encoder (AV_CODEC_ID_H264) возвращает значение null Пользовательский TextView в Android с разными цветовыми словами Кордова видео / аудио не будет воспроизводиться из cdvfile: // URL-адреса после обновления до 3.3.0 Ошибка с Eclipse и Android API уровня 22 Android DrawBitmap Производительность для множества растровых изображений? Коды ошибок ADB Как получить отчеты о сбоях из загружаемого приложения? Как изменить размер моего изображения в моем прокрутке, как это делается на этом изображении? Есть ли способ декодировать файл .ICO с разрешением более 16×16?

После поворота, onCreate () Фрагмент вызывается перед onCreate () FragmentActivity

Я использую FragmentActivity и Fragments.

Когда приложение запускается:

FragmentActivity onCreate() <------ FragmentActivity onStart() FragmentActivity onResume() Fragment onAttach() Fragment onCreate() <------ Fragment onCreateView() Fragment onActivityCreated() Fragment onStart() Fragment onResume() 

Все в порядке, FragmentActivity onCreate () вызывается перед фрагментом onCreate (). И когда я вращаюсь:

 Fragment onPause() FragmentActivity onPause() Fragment onStop() FragmentActivity onStop() Fragment onDestroyView() Fragment onDestroy() Fragment onDetach() FragmentActivity onDestroy() --- Fragment onAttach() Fragment onCreate() <---------- FragmentActivity onCreate() <--------- Fragment onCreateView() Fragment onActivityCreated() Fragment onStart() FragmentActivity onStart() FragmentActivity onResume() Fragment onResume() 

Фрагмент onCreate () вызывается перед FragmentActivity onCreate (). Почему это непоследовательно?

В FragmentActivity onCreate () я генерирую некоторые данные, которые получает Fragment onCreate (). Из-за этого странного поведения мне пришлось переместить мой код из Fragment onCreate () в Fragment onCreateView (), чтобы быть уверенным, что мои данные были сгенерированы раньше.

Я использую FragmentStatePagerAdapter для хранения фрагментов, может быть, это и есть причина?

Solutions Collecting From Web of "После поворота, onCreate () Фрагмент вызывается перед onCreate () FragmentActivity"

Вы не должны рассчитывать на действительное действие до onActivityCreated() в жизненном цикле Фрагмента.

Вызывается, когда активность фрагмента была создана и создается иерархия представлений этого фрагмента. Его можно использовать для выполнения окончательной инициализации после того, как эти части будут на месте, например, получение представлений или восстановление состояния.

Точные причины, по которым порядок перестройки не является линейным, я не могу сказать вам. Вероятно, более эффективно позволить каждому компоненту возобновить свой собственный темп, а не форсировать жесткий заказ. Например, я предпочитаю, чтобы мой LoaderManager запускался как можно раньше, и мы будем беспокоиться о макете для контента позже .

(Мне нравится хорошая диаграмма.)

enter image description here

Фрагменты восстанавливаются во время onCreate() . Важно отметить, что они восстанавливаются в базовом классе Activity onCreate() . Таким образом, если вы super.onCreate() , то весь оставшийся ваш onCreate() будет выполняться после восстановления фрагментов.

Одно из возможных решений заключается в том, чтобы восстановить ваше состояние или рассчитать, какие данные будут нужны вашему фрагменту, super.onCreate() вы super.onCreate()

Жизненный цикл выглядит так:

 ACTIVITY onCreate (pre-super) FRAGMENT onAttach ACTIVITY onCreate (post-super) 

Итак, сделайте что-нибудь вроде этого:

 @Override public void onCreate( final Bundle savedInstanceState ) { Log.d( TAG, "ACTIVITY onCreate (pre-super)" ); // Do your processing here super.onCreate( savedInstanceState ); // Fragments will be restored here Log.d( TAG, "ACTIVITY onCreate (post-super)" ); }