Android. Программирование для профессионалов. 4-е издание


Листинг 9.3. Реализация CrimeListFragment



Download 21,53 Mb.
Pdf ko'rish
bet141/485
Sana13.07.2022
Hajmi21,53 Mb.
#787165
1   ...   137   138   139   140   141   142   143   144   ...   485
Bog'liq
Android Programmirovanie dlya professionalov 4-e izdanie 2020 Fillips Styuart Marsikano Gardner

Листинг 9.3. Реализация CrimeListFragment
(CrimeListFragment.kt)
private const val TAG = "CrimeListFragment"
class CrimeListFragment : Fragment() {
 
 
 
 
private 
val 
crimeListViewModel:
CrimeListViewModel by lazy {
ViewModelProviders.of(this).get(CrimeLi
stViewModel::class.java)
}
override fun onCreate(savedInstanceState:
Bundle?) {
super.onCreate(savedInstanceState)
Log.d(TAG, "Total crimes:
${crimeListViewModel.crimes.size}")
}
companion object {
fun newInstance(): CrimeListFragment {
return CrimeListFragment()
}
}
}
Теперь класс 
CrimeListFragment
представляет собой
пустую оболочку фрагмента. Он регистрирует количество


преступлений, обнаруженных в классе 
Crime 
ListViewModel
.
Разбираться с фрагментом мы будем позже в этой главе.
Хороший метод — создать функцию 
newInstance(...)
,
которую будут вызывать ваши activity, чтобы получить
экземпляр вашего фрагмента. Это похоже на функцию
newIntent()
, которую вы использовали в приложении
GeoQuiz. Из главы 12 вы узнаете, как передавать данные
фрагментам.
Жизненный цикл ViewModel с фрагментами
В главе 4 мы изучили жизненный цикл 
ViewModel
при его
использовании с activity. Жизненный цикл будет немного
другим, когда 
ViewModel
используется с фрагментом. У него
по-прежнему есть два состояния, то есть существующее и
несуществующее, но теперь он связан с жизненным циклом
фрагмента вместо activity.
ViewModel
будет оставаться активным, пока виджет
фрагмента находится на экране. 
ViewModel
сохраняется при
повороте (даже если экземпляр фрагмента не сохраняется) и
будет доступен для нового экземпляра объекта.
ViewModel
уничтожается после уничтожения фрагмента.
Это может произойти, когда пользователь нажимает кнопку
«Назад», закрывая экран. Это также может произойти, если
хост-activity заменяет фрагмент на другой. Хотя на экране
отображается та же activity, и фрагмент, и связанный с ним
ViewModel
будут уничтожены, так как они больше не нужны.
Есть один частный случай — это когда вы добавляете
транзакцию проекта обратно в стек. Когда activity заменяет
текущий фрагмент другим, а транзакция возвращается в стек,
фрагмент и его 
ViewModel
уничтожены не будут. Если
пользователь нажимает кнопку «Назад», транзакция фрагмента


восстанавливается. Оригинальный экземпляр фрагмента
помещается обратно на экран, и все данные 
ViewModel
сохраняются.
Теперь нужно обновить класс 
MainActivity
, чтобы он
размещал 
экземпляр 
Crime 
List 
Fragment
вместо
CrimeFragment
.

Download 21,53 Mb.

Do'stlaringiz bilan baham:
1   ...   137   138   139   140   141   142   143   144   ...   485




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish