Intereting Posts
Могу ли я запустить службу из приложения # onCreate ()? Не удается создать и запустить проект тестирования Android, созданный с помощью «ant create test-project», когда тестируемый проект имеет банки в каталоге libs Как получить последние задания на Android «L»? Как собирать информацию из IntentService и обновлять пользовательский интерфейс Android Метод managedQuery (Uri, String , String, String , String) из типа Activity устарел Как захватить событие onSwipeDown в Google Glass с помощью собственного приложения? Выровнять верхнюю часть изображения вверху TextView Android: разница между положительной, отрицательной и нейтральной кнопками Как добавить динамическую кнопку под другое представление? Динамически добавленные строки таблицы не отображаются Android CookieManager setCookie ничего не устанавливает Загружать конкретную строку языка из ресурса? Как отобразить окно телефонных звонков при нажатии на телефонный номер телефона LocationManager слишком часто вызывает onLocationChanged? Что такое использование Android Super Class?

Методы фрагмента: attach (), detach (), remove (), replace (), popBackStack ()

Я очень смущен между этими функциями и их целями. Я заметил, что использование replace() заменяет существующий фрагмент на новый. Мы можем использовать addToBackStack(null) чтобы поместить этот фрагмент в задний стек, чтобы мы могли вернуться к ранее показанному фрагменту. Теперь, когда фрагмент добавлен (или заменен) – onAttach() -> onCreate() т. Д. Методы фрагмента вызываются по порядку.

Теперь, когда мы вызываем remove() на фрагмент из нашей активности, какие функции фрагмента вызываются и в каком порядке?

Что делают attach() и detach() ? detach() удаление фрагмента? И когда используются эти два attach() и detach() , какие функции фрагмента вызываются и в каком порядке?

Кроме того, что происходит с popBackStack() ? Я имею в виду, какие функции popBackStack() когда мы используем popBackStack() на фрагменте из нашей активности?

А когда делает onDestroy ()?

Спасибо.

Solutions Collecting From Web of "Методы фрагмента: attach (), detach (), remove (), replace (), popBackStack ()"

Теперь, когда мы вызываем remove () на фрагмент из нашей активности, какие функции фрагмента вызываются и в каком порядке?

Посмотрите http://developer.android.com/reference/android/app/Fragment.html .

Порядок: onPause() , onStop() , onDestroyView() , onDestroy() , onDetach()

Что делают attach () и detach ()? Отключает () удаление фрагмента? И когда используются эти два attach () и detach (), какие функции фрагмента вызываются и в каком порядке?

attach() и detach() соответственно ассоциирует или отделяет Fragment с / от Activty . При прикреплении Fragment onAttach() метод жизненного цикла onAttach() , при отсоединении в onDetach() метод жизненного цикла onDetach() . Для получения дополнительной информации см. Ссылку выше.

Кроме того, что происходит с popBackStack ()? Я имею в виду, какие функции вызывается, когда мы используем popBackStack () на фрагменте из нашей активности?

Если Fragment не был уничтожен, то в onStart() onResume() методы onStart() и onResume() . Если Fragment был ранее уничтожен, тогда будут вызваны методы жизненного цикла, начиная с onAttach() . Это то же самое, что и при нажатии кнопки «Назад» в разделе « Activities .

Просто примечание к popBackStack() . Он не выдает фрагмент, он выдает фрагмент транзакции. Таким образом, какова бы ни была последняя транзакция фрагмента. Если вы показывали FragmentA и ваша транзакция была:

 fragmentTransaction.replace(R.id.your_layout, fragmentB); fragmentTransaction.addToBackStack(null); 

Он заменит FragmentA на FragmentB и добавит эту транзакцию (а не фрагмент) в задний стек. Если вы затем нажали кнопку «Назад», он выталкивает задний стек и получает транзакцию, которая «заменила этот FragmentA на FragmentB ». Затем он отменяет эту транзакцию. В обратном порядке инструкция заключается в замене того, что текущий фрагмент на FragmentA . Если исходный FragmentA все еще существует, он использует его. Если он был уничтожен, он создает новый.

Предположим, что фрагмент А и фрагмент В были добавлены в контейнер со следующими этапами:

 1. Added fragment A => .replace(R.id.container, fragmentA) => addToBackStack(null) 2. Added fragment B => .replace(R.id.container, fragmentB) => addToBackStack(null) 3. Removed fragment B => fragmentManager.popBackStack(); 

Обратные вызовы, когда вызывается fm.popBackStack ():

 FragmentB: onPause() FragmentB: onStop() FragmentB: onDestroy() FragmentB: onDetach() FragmentA: onCreateView() FragmentA: onViewCreated() FragmentA: onActivityCreated() FragmentA: onStart() FragmentA: onResume() 

Объяснение: Почему при удалении и уничтожении фрагмента B, используя popBackStack (), фрагмент A view был создан снова и возобновлен?

Ans: Когда вы добавили фрагмент B, вы использовали replace () и addToBackStack (), поэтому все фрагменты были удалены из контейнера, а фрагмент B был добавлен в контейнер. А также эта транзакция была записана в стек «Назад». Итак, когда вызывается fm.popBackStack (), сначала транзакция выталкивается из заднего стека, и поэтому операции возвращаются, поэтому фрагмент b удаляется из контейнера и уничтожается. И все остальные фрагменты добавляются, поскольку наш фрагмент фрагмента A добавляется в контейнер. Также отмечено, что фрагмент A onAttach & onCreate () не вызывается, поскольку он уже был создан и прикреплен к MainActivity ранее.

Обратное нажатие на фрагмент B делает то же самое:

 If you press the back button, it calls fm.popBackStack() and pops the transaction.