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



Download 21,53 Mb.
Pdf ko'rish
bet192/485
Sana13.07.2022
Hajmi21,53 Mb.
#787165
1   ...   188   189   190   191   192   193   194   195   ...   485
Bog'liq
Android Programmirovanie dlya professionalov 4-e izdanie 2020 Fillips Styuart Marsikano Gardner


20sp
3dp
12. Навигация по фрагментам
В этой главе мы наладим совместную работу списка и
детализации в приложении CriminalIntent. Когда пользователь
щелкает на элементе списка преступлений, 
MainActivity
выгружает 
CrimeListFragment
и выводит новый экземпляр
Crime 
Fragment
с подробной информацией о конкретном
экземпляре Crime (рис. 12.1).
Рис. 12.1. Передача CrimeListFragment в CrimeFragment
Чтобы это заработало, нам надо реализовать навигацию,
заставляя хост-activity заменять фрагменты в ответ на действия
пользователя. Также вы научитесь передавать данные
экземпляру фрагмента с помощью аргументов фрагмента.
Наконец, 
вы 
узнаете, 
как 
использовать
преобразования
LiveData
для загрузки неизменяемых данных в
ответ на изменения пользовательского интерфейса.


Одиночная activity: главный фрагмент
В приложении GeoQuiz одна activity (
MainActivity
) запускала
другую (
Cheat 
Activity
). В CriminalIntent мы реализуем
архитектуру «одна activity». В приложении с такой
архитектурой — всего одна activity и несколько фрагментов.
Задача activity заключается в загрузке и выгрузке фрагментов в
ответ на пользовательские события.
Для реализации навигации от 
CrimeListFragment
к
CrimeFragment
в ответ на нажатие пользователем на
преступление в списке можно подумать об инициировании
операции с фрагментами в менеджер фрагментов хост-activity в
функции 
CrimeHolder.onClick(View)
у
CrimeListFragment
. Функция 
onClick(View)
получит
FragmentManager
от 
MainActivity
и совершит операцию с
фрагментом, который заменит 
CrimeListFragment
на
CrimeFragment
.
Код в 
CrimeListFragment
.
CrimeHolder
будет выглядеть
следующим образом.
fun onClick(view: View) {
val 
fragment 
=
CrimeFragment.newInstance(crime.id)
val fm = activity.supportFragmentManager
fm.beginTransaction()
.replace(R.id.fragment_container,
fragment)
.commit()
}
Это работает, но крутые программисты на Android делают не
так. 
Фрагменты 
предназначены 
быть 
автономными
составными единицами. Если вы пишете фрагмент, который


добавляет фрагменты во 
FragmentManager
activity, то этот
фрагмент «предполагает», как работает хост-activity, и больше
не является самостоятельной единицей.
Например, в приведенном выше коде 
CrimeListFragment
добавляет фрагмент 
CrimeFragment
в 
MainActivity
и
«предполагает», что в компоновке 
MainActivity
есть
fragment_container
. Эта задача обрабатывается хост-activity
CrimeListFragment
, а не 
CrimeListFragment
.
Для сохранения независимости ваших фрагментов вы будете
делегировать работу обратно в хост-activity, определяя во
фрагментах интерфейсы обратного вызова. Хост-activity
реализует эти интерфейсы для выполнения задач по надзору за
фрагментами и поведения, зависящего от компоновки.

Download 21,53 Mb.

Do'stlaringiz bilan baham:
1   ...   188   189   190   191   192   193   194   195   ...   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