DEV_EASY_NOTES Telegram 93
Как я уже говорил Fragment это в некотором смысле усложненная View. Однако добавить фрагмент на Activity мы не можем просто вызвать view.addView(SomeFragment()). Fragment гораздо сложнее и для добавления фрагмент в Activity мы используем Fragment Manager.

Fragment Manager – как понятно из названия полностью отвечает за работу с фрагментами. Он умеет восстанавливать фрагменты, сохранять их стейт, передавать события ЖЦ от Activity, показывать новые, все что связано с фрагментами.

У Activity есть свой Fragment Manager, и у фрагмента тоже есть свой Fragment Manager. Фрагменту нужен свой fragment manager, потому как мы можем и внутри фрагмента показывать другие фрагменты, например DialogFragment.

Значится есть два стула основных способа как показать первый фрагмент:

👉 Через верстку
👉 Через код

С методом через верстку все довольно очевидно. Просто в наш layout через специальный тег встраиваем наш фрагмент. Плюс в том, что Activity сама полностью позаботится о том как правильно запустить фрагмент и как правильно восстановить его состояние при пересоздании. Недостаток этого способа в том, что можно показать только ограниченное количество фрагментов и вы не управляете этим процессом. Чаще всего такой способ используется для какой-нибудь статики.

Второй способ встречается намного чаще. Скорее всего вы уже так или иначе как-то пробовали работать с фрагментами через код, тут я просто хочу подсветить одну штуку которую порой пропускают. Рассмотрим базовый пример, как показать первый фрагмент через код.

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.container, MainFragment())
.commit()
}
}

Как я уже упомянул, Fragment Manager умеет восстанавливать фрагменты при смерти Activity. Отсюда вытекает вот это условие с savedInstanceState == null. Потому как если Activity пересоздается, то Fragment Manager сам восстановит фрагмент и нам не нужно делать эту транзакцию.

Это важно потому как, если мы заново сами создадим фрагмент, то потерям сохранённое состояние фрагмента. Пользователь вводил какие-то данные в EditText, потом случайно перевернул телефон, а мы эти данные потеряли. Спасибо за такое он явно не скажет.
👍37🔥1



tgoop.com/dev_easy_notes/93
Create:
Last Update:

Как я уже говорил Fragment это в некотором смысле усложненная View. Однако добавить фрагмент на Activity мы не можем просто вызвать view.addView(SomeFragment()). Fragment гораздо сложнее и для добавления фрагмент в Activity мы используем Fragment Manager.

Fragment Manager – как понятно из названия полностью отвечает за работу с фрагментами. Он умеет восстанавливать фрагменты, сохранять их стейт, передавать события ЖЦ от Activity, показывать новые, все что связано с фрагментами.

У Activity есть свой Fragment Manager, и у фрагмента тоже есть свой Fragment Manager. Фрагменту нужен свой fragment manager, потому как мы можем и внутри фрагмента показывать другие фрагменты, например DialogFragment.

Значится есть два стула основных способа как показать первый фрагмент:

👉 Через верстку
👉 Через код

С методом через верстку все довольно очевидно. Просто в наш layout через специальный тег встраиваем наш фрагмент. Плюс в том, что Activity сама полностью позаботится о том как правильно запустить фрагмент и как правильно восстановить его состояние при пересоздании. Недостаток этого способа в том, что можно показать только ограниченное количество фрагментов и вы не управляете этим процессом. Чаще всего такой способ используется для какой-нибудь статики.

Второй способ встречается намного чаще. Скорее всего вы уже так или иначе как-то пробовали работать с фрагментами через код, тут я просто хочу подсветить одну штуку которую порой пропускают. Рассмотрим базовый пример, как показать первый фрагмент через код.

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.container, MainFragment())
.commit()
}
}

Как я уже упомянул, Fragment Manager умеет восстанавливать фрагменты при смерти Activity. Отсюда вытекает вот это условие с savedInstanceState == null. Потому как если Activity пересоздается, то Fragment Manager сам восстановит фрагмент и нам не нужно делать эту транзакцию.

Это важно потому как, если мы заново сами создадим фрагмент, то потерям сохранённое состояние фрагмента. Пользователь вводил какие-то данные в EditText, потом случайно перевернул телефон, а мы эти данные потеряли. Спасибо за такое он явно не скажет.

BY Dev Easy Notes


Share with your friend now:
tgoop.com/dev_easy_notes/93

View MORE
Open in Telegram


Telegram News

Date: |

The group’s featured image is of a Pepe frog yelling, often referred to as the “REEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and “degen” culture. Other crimes that the SUCK Channel incited under Ng’s watch included using corrosive chemicals to make explosives and causing grievous bodily harm with intent. The court also found Ng responsible for calling on people to assist protesters who clashed violently with police at several universities in November 2019. Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation. To edit your name or bio, click the Menu icon and select “Manage Channel.” Developing social channels based on exchanging a single message isn’t exactly new, of course. Back in 2014, the “Yo” app was launched with the sole purpose of enabling users to send each other the greeting “Yo.”
from us


Telegram Dev Easy Notes
FROM American