Фрагменты - это забавные вещи, но я подумал, что, когда вы знаете их причуды, они являются бесценным инструментом для написания хорошего кода на нескольких устройствах.Fragment/Activity Lifecycles and Orientation Change
Однако, исправляя ошибку изменения ориентации, я подбежал к стене. Для того, чтобы мой фрагмент работал, ему нужен доступ к представлению, который принадлежит к нему. Активность ведет меня к веселому преследованию, пытаясь найти, как взаимодействуют жизненные циклы активности &.
Я добавляю фрагмент к моей деятельности просмотра в это onCreate()
метод:
// Only add a fragment once, as after it's been added it cannot be replaced (Even though there is a .replace() method. Which is a massive gaping hole in fragments as a technology if you ask me)
if(savedInstanceState == null) {
MainMenuFragment menu= new MainMenuFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.menuFrame, menu);
transaction.commit();
}
ведущий к этому деятельность-> Фрагмент Lifecycle:
01-04 15:17:27.226: W/SinglePaneActivity 0: onCreate()
01-04 15:17:27.378: W/MainMenuFragment 0: onAttach() to SinglePaneActivity 0
01-04 15:17:27.378: W/MainMenuFragment 0: onCreate()
01-04 15:17:27.453: W/MainMenuFragment 0: onActivityCreated()
01-04 15:17:27.476: W/MainMenuFragment 0: onStart()
01-04 15:17:27.476: W/SinglePaneActivity 0: onStart()
01-04 15:17:27.476: W/SinglePaneActivity 0: onResume()
01-04 15:17:27.476: W/MainMenuFragment 0: onResume()
изменение ориентации, однако подчеркивает, что это ISN Обычно это так, A-фрагменты onCreate()
метод не вызывается после его родительской активности. onCreate()
. Infact, первый жизненный цикл зов фрагмента onAttach()
происходит до того, как активность даже была создана (null
передается в качестве аргумента):
01-04 15:10:49.589: W/MainMenuFragment 0: onPause()
01-04 15:10:49.589: W/SinglePaneActivity 0: onPause()
01-04 15:10:49.589: W/MainMenuFragment 0: onStop()
01-04 15:10:49.589: W/SinglePaneActivity 0: onStop()
01-04 15:10:49.589: W/MainMenuFragment 0: onDestroyView()
01-04 15:10:49.589: W/MainMenuFragment 0: onDestroy()
01-04 15:10:49.589: W/MainMenuFragment 0: onDetach()
01-04 15:10:49.609: W/SinglePaneActivity 0: onDestroy()
01-04 15:10:49.617: W/MainMenuFragment 1: onAttach() to null
01-04 15:10:49.617: W/MainMenuFragment 1: onCreate()
01-04 15:10:49.617: W/SinglePaneActivity 1: onCreate()
01-04 15:10:49.890: W/MainMenuFragment 1: onActivityCreated()
01-04 15:10:49.917: W/MainMenuFragment 1: onStart()
01-04 15:10:49.917: W/SinglePaneActivity 1: onStart()
01-04 15:10:49.921: W/SinglePaneActivity 1: onResume()
01-04 15:10:49.921: W/MainMenuFragment 1: onResume()
Я абсолютно не знаю, почему это происходит. Может ли кто-нибудь пролить свет на то, почему Fragment.onAttach()
вызывается до того, как он будет создан. Активность была создана?
Фрагменты У меня есть, которым не нужен доступ к их содержательной активности (пока взаимодействие с пользовательским интерфейсом) работает должным образом.
, пожалуйста, помогите мне http://stackoverflow.com/questions/12331787/save-fragment-objects – user4o01