2016-03-22 3 views
-1

У меня есть деятельность, в которой есть контейнер. И у меня есть два фрагмента, которые я заменяю в этом контейнере. Фрагменты являются fragmentList и fragmentDetailАктивность перезагрузки - обработка двух фрагментов в контейнере

Первый раз я добавляю фрагмент списка в контейнер

MainActivity OnCreate

if (savedInstanceState == null) { 
    ListFragment listFragment = new ListFragment(); 
    ft.add(R.id.fragment_container, listFragment, "LIST"); 
    ft.commit(); 
} 

Когда пользователь нажимает на список, я заменяю контейнер фрагментом детали

ActionButton

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.fragment_container, detailFragment); 
fragmentTransaction.commit(); 

http://www.vogella.com/tutorials/Android/images/xfragmentsusage10.png.pagespeed.ic.MkyF4ZO5Hr.png

Проблема возникла, когда я перезагружать деятельность. Как я могу узнать, нужно ли мне снова запрашивать данные списка или показать фрагмент детали? Потому что в моем методе onResume оба фрагмента являются нулевыми.

ответ

1

вы уже проверки savedInstanceState который является вашим первым шагом

проверить этот документ для деталей: http://developer.android.com/intl/es/training/basics/activity-lifecycle/recreating.html

ключ очень просто, сохранить текущее состояние в onSaveInstanceState методы, и восстановить state on onRestoreInstanceState

savedInstanceState - это пучок, объекты Bundle используются для хранения и передачи данных между действиями и фрагментами, и поэтому вам нужно сохранить в нем булевскую переменную, чтобы определить, какой фрагмент вы показываете, й восстановить этот фрагмент на резюме в соответствии с этим булевой флагом

+0

Есть еще один способ передать «активированный фрагмент» вместо прохождения булевского? Потому что по моему варианту это должно быть чисто. – rguerra

+0

вы не можете передавать объекты в своем комплекте, если они не являются пакетами или Serializable, что невозможно или очень сложно сделать для фрагментов, кроме того, что это полная противоположность тому, что вы должны делать, Android удаляет фрагмент в свободную память, если u сохранит его, то какая точка?!, если ваш фрагмент имеет информацию, хранящую их в комплекте, а также строки и цифры, это довольно легко и прямо, если это то, что вы подразумеваете под чистым –

+0

. Имею ли я доступ к расслоение в методе onResume? – rguerra

0

Вы можете использовать

getFragmentManager().FindFragmentByTag(string tag) 

И проверить, если она равна нулю, а затем вы можете проверить IsVisible на фрагмент возвращается, как правило, вам потребуется сбросить адаптеры, а также

Смежные вопросы