Fragment: bu nədir, fraqmentlər və Android-də FragmentManager

Müəllif: IT Sectr Dərc olunub: 2026-02-22 Oxuma vaxtı: 7 dəq

Fragment — Android-də Activity daxilinə yerləşdirilən və FragmentManager vasitəsilə idarə olunan təkrar istifadə olunan UI komponentidir. Hər fraqmentin öz həyat dövrü, layout və vəziyyəti var. Fragment müxtəlif ekran ölçülərinə uyğunlaşmağı və kodun təkrar istifadəsini asanlaşdırır. Ətraflı məlumat üçün Google-ın rəsmi təlimatına baxın.

Əsas məqamlar

  • Fragment — Activity daxilində öz həyat dövrü və layoutu olan UI komponenti
  • FragmentManager — fraqment əməliyyatları və geri yığınını idarə edən sinif
  • FragmentTransaction — fraqmentlərin əlavə edilməsi, dəyişdirilməsi və ya silinməsi üçün atomik əməliyyat
  • Jetpack Fragment — Android 1.6 (API 4)-dək geriyə uyğunluq kitabxanası
  • ViewModel — bir Activity daxilində fraqmentlər arasında məlumat mübadiləsi üçün ümumi komponent

Fragment nədir?

Fragment — Activity daxilində ekranın bir hissəsini təmsil edən modul Android istifadəçi interfeysi komponentidir. Fragment öz layoutunu idarə edə, həyat dövrü hadisələrini emal edə və vəziyyətini saxlaya bilər. Modulluğu sayəsində bir fraqment müxtəlif Activity-lərdə və müxtəlif cihazlarda istifadə oluna bilər.

Fragment API Android 3.0 (Honeycomb, API 11) 2011-ci ildə planşetləri dəstəkləmək üçün ortaya çıxdı. Bundan əvvəl tərtibatçılar telefon və planşet üçün ayrıca Activity-lər yaratmalı idilər. Fragment ekranı müstəqil bloklardan yığmağa imkan verdi. 2019-cu ildə Google API 4-ə qədər geriyə uyğunluqla Jetpack Fragment kitabxanasını buraxdı.

Google məlumatlarına görə (2026), Google Play-dəki proqramların 80%-i Fragment-dən bu və ya digər formada istifadə edir. Jetpack Fragment kitabxanası Google Play Services vasitəsilə 10 milyard dəfədən çox yüklənib. Fragment Jetpack Compose dövründə belə Android arxitekturasının əsas komponenti olaraq qalır.

Fragment-in həyat dövrü

Fragment-in həyat dövrü Activity-dən daha mürəkkəbdir, çünki o, ev sahibi Activity-nin vəziyyətindən asılıdır. Fragment Activity ilə eyni vəziyyətlərdən keçir, lakin öz callback-lərini əlavə edir: onAttach, onCreateView, onViewCreated, onActivityCreated, onDestroyView, onDetach.

Fragment callbackActivity uyğunluğuMəqsəd
onAttachonCreate-dən əvvəlFragment Activity-yə bağlandı
onCreateonCreateUI ilə əlaqəli olmayan məlumatların inisiallaşdırılması
onCreateViewonCreateInflater vasitəsilə layout yaradılması
onViewCreatedonCreateView yaradıldıqdan sonra UI elementlərinin bağlanması
onDestroyViewonDestroyView silinməsi, UI resurslarının azad edilməsi
onDetachonDestroyFragment Activity-dən ayrıldı

Fragment və Activity həyat dövrünün müqayisəsi

Fragment həyat dövrü-nün əsas fərqi — onCreate və onDestroy arasında onCreateView və onDestroyView çağırışlarıdır. Fragment UI olmadan mövcud ola bilər (əgər onCreateView null qaytarırsa). Activity yenidən yaradıldıqdan sonra FragmentManager fraqmentləri avtomatik bərpa edir.

FragmentManager və əməliyyatlar

FragmentManager — Activity-də fraqmentləri idarə etmək üçün mərkəzi sinif. O, fraqmentlərin əlavə edilməsi, silinməsi, dəyişdirilməsi, geri yığınının idarə edilməsi və vəziyyətin bərpasına cavabdehdir. FragmentManager supportFragmentManager (AndroidX) və ya fragmentManager (köhnə API) vasitəsilə əldə edilir.

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Əgər fraqment hələ əlavə edilməyibsə — yaradırıq
        if (savedInstanceState == null) {
            val transaction = this.supportFragmentManager
                .beginTransaction()
            transaction.add(R.id.fragment_container, ListFragment())
            transaction.addToBackStack(null)
            transaction.commit()
        }
    }

    fun replaceFragment(fragment: Fragment) {
        supportFragmentManager.beginTransaction()
            .replace(R.id.fragment_container, fragment)
            .addToBackStack(null)
            .commit()
    }
}

FragmentTransaction əməliyyatları — atomikdir. commit() icranı növbəti Looper dövrünə planlaşdırır. Dərhal icra üçün commitNow() istifadə edin. addToBackStack(null) əməliyyatı geri yığınına əlavə edir — «Geri» düyməsi əməliyyatı ləğv edəcək.

Fragment həyat dövrü metodları

Kotlin nümunəsi ilə Fragment həyat dövrü-nün əsas metodlarını nəzərdən keçirək. onCreateView layout yaradır — Activity-dən fərqli olaraq metod View qaytarmalıdır. onViewCreated dərhal sonra çağırılır, burada elementləri id ilə tapmaq təhlükəsizdir. onDestroyView — view istinadlarını təmizləmək üçün son fürsət.

kotlin
class DetailFragment : Fragment() {

    private var _binding: FragmentDetailBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentDetailBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.textTitle.setText("Təfərrüatlar")
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}

View Binding nümunəsi _binding/binding ilə onDestroyView-dən sonra layout istinadının sıfırlanmasını təmin edir. View məhv edildikdən sonra binding-ə müraciət NullPointerException yaradacaq. Bu nümunə Google tərəfindən bütün fraqmentlər üçün tövsiyə olunur.

Fraqmentlər arasında məlumat ötürülməsi

Fraqmentlər arasında məlumat ötürülməsi üçün Android bir neçə mexanizm təklif edir. Ən etibarlısı — bir Activity-nin fraqmentləri arasında paylaşılan ümumi ViewModel-dir. Fragment Result API birdəfəlik hadisələr üçün uyğundur. Bundle arqumentləri — fraqment yaradılarkən məlumatlar üçün.

kotlin
// İki fraqment üçün ümumi ViewModel
class SharedViewModel : ViewModel() {
    private val _selectedItem = MutableLiveData<Item>()
    val selectedItem: LiveData<Item> = _selectedItem

    fun select(item: Item) { _selectedItem.setValue(item) }
}

// Fragment A: Fragment Result API vasitəsilə hadisə göndərir
setFragmentResult("request_key", bundleOf("key" to "value"))

// Fragment B: hadisəni qəbul edir
childFragmentManager.setFragmentResultListener("request_key", this) { requestKey, bundle ->
    val value = bundle.getString("key")
}

Fragment Result API (Fragment 1.3.0-da əlavə edilib) köhnəlmiş setTargetFragment/onActivityResult-u əvəz edir. API tip təhlükəsizdir, Bundle istifadə edir və alıcı haqqında məlumat tələb etmir. Parent FragmentManager fraqmentlər arasında vasitəçi rolunu oynayır.

Fragment vs Activity: nə vaxt nəyi seçməli

Fragment və Activity arasında seçim proqram arxitekturasından asılıdır. Fragment adaptiv layoutlar (telefon + planşet), fərdi keçid animasiyaları və Jetpack Navigation istifadəsi üçün məcburidir. Activity bir-iki ekranlı sadə proqramlar üçün daha üstündür.

MeyarFragmentActivity
Yaradılma sürətiDaha sürətli (yüngül komponent)Daha yavaş (sistem prosesi)
Təkrar istifadəYüksək (bir fraqment müxtəlif Activity-lərdə)Aşağı (hər ekran — öz Activity-si)
Keçid animasiyasıÇevik (FragmentTransaction)Məhdud (overridePendingTransition)
Dönmədə qorunmaAvtomatik (menecer bərpa edir)Əl ilə (onSaveInstanceState)
Deep LinksNavigation Component vasitəsiləintent-filter ilə yerli dəstək

Jetpack Fragment və Jetpack Navigation

Fragment ilə işin müasir yanaşması — FragmentManager-in əl ilə idarə edilməsini əvəz edən Jetpack Navigation Component-dir. Kitabxana NavGraph (XML naviqasiya qrafı), NavHostFragment və tip təhlükəsiz məlumat ötürülməsi üçün Safe Args təqdim edir.

Jetpack Fragment kitabxanası (androidx.fragment:fragment-ktx) FragmentResult API, DialogFragment, BottomSheetDialogFragment və Lifecycle-aware komponentləri ilə inteqrasiyanı əhatə edir. 2026-cı ildən Google Fragment-dən birbaşa deyil, yalnız Jetpack Navigation vasitəsilə istifadə etməyi tövsiyə edir.

xml

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:startDestination="@+id/listFragment">

    <fragment
        android:id="@+id/listFragment"
        android:name=".ListFragment"
        android:label="Siyahı">
        <action
            android:id="@+id/action_list_to_detail"
            app:destination="@+id/detailFragment" />
    </fragment>

    <fragment
        android:id="@+id/detailFragment"
        android:name=".DetailFragment"
        android:label="Təfərrüatlar" />
</navigation>

Tez-tez verilən suallar

FragmentManager — bu nədir?

FragmentManager — fraqment əməliyyatlarını idarə edən sinif. O, Activity konteynerinə fraqmentləri əlavə edir, silir, dəyişdirir. FragmentManager Activity yenidən yaradıldıqda fraqmentlərin vəziyyətini bərpa edir və geri yığınını idarə edir.

Fragment Activity-dən nə ilə fərqlənir?

Fragment — Activity daxilində UI hissəsi, müstəqil mövcud ola bilməz. Fragment ekran dönməsində Activity-nin yenidən yaradılmasından sağ çıxır. Activity — öz Lifecycle-i olan tam ekran, Fragment Activity-nin Lifecycle-indən asılıdır.

Nə vaxt Fragment-i Activity əvəzinə istifadə etməli?

Fragment — ekran bir neçə müstəqil blokdan ibarət olduqda (tablar, master-detail, planşetə uyğunlaşma). Activity — ekranda təkrarlanan bloklar olmadıqda. Google Single Activity + çoxlu Fragment tövsiyə edir.

Fraqmentlər arasında məlumatı necə ötürmək olar?

Üç üsul: valideyn Activity vasitəsilə (ümumi ViewModel), Fragment Result API (setFragmentResult) vasitəsilə, Fragment yaradılarkən Bundle arqumentləri ilə. ViewModel — üstünlük verilən üsul, çünki məlumatlar yenidən yaratmada qorunur.

Fragment Transaction nədir?

Fragment Transaction — fraqmentlər dəstinin dəyişdirilməsi üçün atomik əməliyyat. FragmentManager.beginTransaction() əməliyyatı açır, burada add, remove, replace, hide, show çağırmaq olar. Hər əməliyyat commit() və ya commitNow() ilə bitir.

Xülasə

  • Fragment — Activity daxilində öz həyat dövrü, layoutu və vəziyyəti olan təkrar istifadə olunan UI komponenti
  • FragmentManager fraqment əməliyyatlarını idarə edir və Activity yenidən yaradıldıqda onların vəziyyətini bərpa edir
  • FragmentTransaction — fraqmentlərin əlavə edilməsi, dəyişdirilməsi, silinməsi və gizlədilməsi üçün atomik əməliyyat
  • Fragment həyat dövrü onAttach-dən onDetach-dək altı callback, əlavə onCreateView nöqtəsi ilə
  • ViewModel — bir Activity daxilində fraqmentlər arasında məlumat mübadiləsi üçün tövsiyə olunan üsul
  • Fragment Result API fraqmentlər arasında birdəfəlik hadisələrin tip təhlükəsiz ötürülməsini təmin edir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun