0Pricing
Android Academy · Ders

Fragment'ler

Fragment'lerle modüler kullanıcı arayüzleri oluşturun. Fragment yaşam döngüsünü, fragment'lerde ViewBinding kullanımını, bağımsız değişken aktarımını, geri yığın yönetimini ve fragment-Activity iletişimini öğrenin.

Fragment'ler, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 7 dersinin 6. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 7 dersten oluşur.

Fragment'ler Nedir?

Fragment, bir Activity içinde yer alan ve yeniden kullanılabilen bir kullanıcı arayüzü modülüdür. Bunu, kendi düzeni, yaşam döngüsü ve mantığı olan bir alt Activity gibi düşünebilirsiniz.

Fragment'ler neden kullanılır?

  • Kullanıcı arayüzünü birden fazla Activity'de yeniden kullanmak
  • Telefon ve tablet için farklı düzenleri yönetmek
  • Birden fazla Activity kullanmadan çok ekranlı akışlar oluşturmak
  • Navigation Component ile doğal biçimde çalışmak

Fragment Yaşam Döngüsü

Fragment'lerin, Activity yaşam döngüsüyle birlikte çalışan kendi yaşam döngüleri vardır. Temel geri çağrılar şunlardır:

  • onAttach — fragment Activity'ye bağlanır
  • onCreate — fragment oluşturulur (henüz görünüm yoktur)
  • onCreateView — düzen şişirilir
  • onViewCreated — görünüm hazırdır; kullanıcı arayüzünü burada kurun
  • onDestroyView — görünüm yok edilir (görünüm başvurularını temizleyin)
  • onDetach — fragment ayrılır

Fragment Oluşturma

Fragment sınıfını genişleten bir sınıf oluşturun ve düzeni şişirmek için onCreateView yöntemini geçersiz kılın:

import androidx.fragment.app.Fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

class HomeFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_home, container, false)
    }
}

Fragment'lerde ViewBinding

Fragment'lerde ViewBinding kullanın; ancak bellek sızıntılarını önlemek için binding'i onDestroyView içinde serbest bırakın:

class HomeFragment : Fragment() {

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

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

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.tvTitle.text = "Welcome!"
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null   // prevent memory leak
    }
}

Fragment Düzeni XML'i

Tıpkı bir Activity düzeni gibi res/layout/fragment_home.xml dosyasını oluşturun. Kök görünüm, Fragment'in görünümü olur:

<!-- res/layout/fragment_home.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:text="Home" />

</LinearLayout>

Activity'ye Fragment Ekleme

Bir Activity'ye Fragment eklemenin iki yolu vardır:

  • Statik (XML) — düzende <fragment> etiketiyle tanımlanır. Çalışma zamanında sabittir.
  • Dinamik (kod) — FragmentManager ve işlemleri kullanır. Çalışma zamanında değiştirilebilir.
<!-- Static: in activity_main.xml -->
<fragment
    android:id="@+id/homeFragment"
    android:name="com.example.HomeFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Dinamik Fragment İşlemleri

Fragment'leri çalışma zamanında eklemek, değiştirmek veya kaldırmak için supportFragmentManager kullanın:

// In Activity:
class MainActivity : AppCompatActivity(R.layout.activity_main) {

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

        if (savedInstanceState == null) {
            supportFragmentManager.beginTransaction()
                .add(R.id.fragmentContainer, HomeFragment())
                .commit()
        }
    }

    fun showDetail(id: Int) {
        supportFragmentManager.beginTransaction()
            .replace(R.id.fragmentContainer, DetailFragment.newInstance(id))
            .addToBackStack(null)  // allow back navigation
            .commit()
    }
}

Fragment'lere Bağımsız Değişken Aktarma

Companion object fabrika kalıbını kullanarak bir Bundle üzerinden veri aktarın. Parametre alan bir Fragment oluşturucusunu hiçbir zaman kullanmayın; yapılandırma değişikliklerinden sonra Android, fragment'leri parametresiz oluşturucuyla yeniden oluşturur:

class DetailFragment : Fragment() {

    companion object {
        private const val ARG_ID = "item_id"

        fun newInstance(itemId: Int): DetailFragment {
            return DetailFragment().apply {
                arguments = Bundle().apply {
                    putInt(ARG_ID, itemId)
                }
            }
        }
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val itemId = requireArguments().getInt(ARG_ID)
        // use itemId to load data
    }
}

Fragment → Activity İletişimi

Fragment içinde tanımlanan ve Activity tarafından uygulanan bir arayüz kullanın. Fragment, onAttach üzerinden bir başvuru alır:

class ListFragment : Fragment() {

    interface OnItemSelected {
        fun onItemSelected(id: Int)
    }

    private var listener: OnItemSelected? = null

    override fun onAttach(context: Context) {
        super.onAttach(context)
        listener = context as? OnItemSelected
    }

    private fun handleClick(id: Int) {
        listener?.onItemSelected(id)
    }

    override fun onDetach() {
        super.onDetach()
        listener = null
    }
}

Geri Yığını

Bir işlem içinde addToBackStack(null) çağırdığınızda Geri düğmesine basılması, fragment'i yığından çıkarır:

  • addToBackStack olmadan — Geri düğmesi Activity'den çıkar
  • addToBackStack ile — Geri düğmesi önceki fragment'e döner
  • Geri gitmek için programlı olarak popBackStack() kullanın

Bir Kapsayıcıda Fragment

Activity düzeninin yalnızca bir kapsayıcı görünüme ihtiyacı vardır; genellikle ID'si olan bir FrameLayout. Fragment bu kapsayıcıyı doldurur:

<!-- activity_main.xml -->
<FrameLayout
    android:id="@+id/fragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Hızlı Kontrol

Bir Fragment'e oluşturucu bağımsız değişkenleri aktarmak yerine neden bir companion fabrika aracılığıyla Bundle kullanmalısınız?

Özet: Fragment'ler

Fragment'ler, modern Android kullanıcı arayüzlerinin yapı taşlarıdır:

  • Fragment'i genişletin, düzeni onCreateView içinde şişirin
  • Kullanıcı arayüzünü onViewCreated içinde kurun
  • ViewBinding'i onDestroyView içinde serbest bırakın
  • Verileri Bundle + companion fabrika (newInstance) aracılığıyla aktarın
  • Geri gezinme için addToBackStack kullanın
  • Activity ile bir arayüz aracılığıyla iletişim kurun

Sıradaki konu: çalışma zamanında tehlikeli izinler istemek.

Sıkça Sorulan Sorular

“Fragment'ler” dersi ücretsiz mi?

Evet — “Fragment'ler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 7 dersten oluşur.

“Fragment'ler” dersinde ne öğreneceğim?

Fragment'lerle modüler kullanıcı arayüzleri oluşturun. Fragment yaşam döngüsünü, fragment'lerde ViewBinding kullanımını, bağımsız değişken aktarımını, geri yığın yönetimini ve fragment-Activity ileti… Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Android Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 7 dersinin 6. dersidir.

“Fragment'ler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Proje Yapısı ve Manifest
  2. Activity'ler ve Yaşam Döngüsü
  3. Düzenler ve Görünümler
  4. Kullanıcı Girdisini Ele Alma
  5. Intent'ler ve Gezinme
  6. Fragment'ler
  7. İzinler ve Çalışma Zamanı İstekleri
← Android Academy Sayfasına Dön