Я хотел понять взаимодействие между жизненным циклом деятельности и жизненным циклом фрагмента в Android, поэтому я решил начать новый проект и скопировать код с this page.
Я тогда подумал, что для улучшения моего понимания было бы полезно протестировать его на планшете, переключить его ориентацию и посмотреть, что это произойдет (хотя, возможно, оно не предназначалось для этого). Через LogCat я отслеживал главных событий, которые обожженных как на деятельности и на фрагменте страны, например, в деятельности OnCreate я пишу:Жизненный цикл скрытого фрагмента
Log.d("TAG", "Activity: 1.onCreate");
Это то, что я получаю, когда я начинаю с точки зрения портретного а затем повернуть:
TAG: активность: 1.onCreate
TAG: активность: 2.onStart
TAG: ## ContryFrag: 1.onAttach
TAG: ## ContryFrag: 2.onCreateView
TAG: ## ContryFrag: 3.onStart
TAG: Активность: 3.onResume
TAG: ## ContryFrag: 4.onResume
TAG: Активность: -3.onPause
TAG: ## ContryFrag: -4 .onPause
TAG: активность: -2.onStop
TAG: ## ContryFrag: -3.onStop
TAG: активность: -1.onDestroy
TAG: ## ContryFrag: -2.onDestroyView
TAG: ## ContryFrag: -1.onDetach
TAG: Деятельность: 1.onCreate
TAG: ## ContryFrag: 1.onAttach
TAG: ## ContryFrag: 1.onAttach
TAG: ## ContryFrag: 2.onCreateView
TAG: Активность: 2.onStart
TAG: ## ContryFrag: 2 .onCreateView
TAG: ## ContryFrag: 3.onStart
TAG: ## ContryFrag: 3.onStart
TAG: активность: 3.onResume
TAG: ## ContryFrag: 4.onResume
TAG: ## ContryFrag: 4.onResume
Кажется, что фрагмент, который был добавлен через FragmentManager в портретном представлении, по-прежнему воссоздается после вращения, несмотря на то, что он был отсоединен раньше. Цепочка событий для ее возобновления выполняется снова, даже если она не будет отображаться.
Можете ли вы помочь мне понять, что здесь происходит?
EDIT
Когда я проверяю, если фрагмент isInLayout()
Log.d("TAG", "## ContryFrag: 1.onAttach /" + isInLayout());
Я понимаю, что есть два фрагмента после поворота: один, созданных с вращением и второй, который, кажется, остаток предыдущего действия (чего не должно быть).
TAG: Активность: 1.onCreate
TAG: ## ContryFrag: 1.onAttach/ложь
TAG: ## ContryFrag: 1.onAttach/верно
TAG: ## ContryFrag: 2.onCreateView/верно
TAG: Активность: 2.onStart
TAG: ## ContryFrag: 2.onCreateView/ложные
TAG: ## ContryFrag: 3.onStart/ложь
TAG: ## ContryFrag: 3.onStart/верно
TAG: активность: 3.onResume
TAG: ## ContryFrag: 4.onResume/ложь
TAG: ## ContryFrag: 4.onResume/true
EDIT 2
Это фиктивный код, который я использовал, чтобы получить onSelectedCountry (Струнный страна), которая не предоставляется:
public void onSelectedCountry(String country)
{
String[] x = {country, "city0", "city1", "city2", "city3", "city4", "city5"};
adapter.clear();
adapter.addAll(x);
}
EDIT 3
Вот my code. Извините за задержку, это был первый раз, когда я использовал github.
Возможно, это из-за вашего журнала. Проверьте это в своем «Городском фрагменте». В режиме «пейзаж» я думаю, что фрагмент «city» и фрагмент «country» записывают одни и те же вещи. –
Вы хотите сказать, что, возможно, код, отправляющий сообщения в logcat, также называется фрагментом City? Нет, я использовал код только для основного actvity и фрагментации страны. –
Лучше, если вы разместите код в своем сообщении для удобства. В опубликованной ссылке не отображается весь код. Например, есть ли код для Activity.onStart()? –