Sobes.tech
Junior

Bir Activity'de fragmentler nasıl uygulanabilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Activity fragmentlerinde, bunlar XML'de deklaratif olarak veya FragmentManager kullanılarak programatik olarak uygulanabilir.

Deklaratif (XML'de):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // Fragmentin tam sınıf adı
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • Fragment, Activity oluşturulurken eklenir.
  • Statik düzenler için kolaydır.
  • Dinamik işlemler için daha az esnektir.

Programatik ( FragmentManager ile):

// Activity içindeki bir metodun içinde, örneğin onCreate veya bir olay sırasında
val fragmentManager = supportFragmentManager // AppCompatActivity için
val fragmentTransaction = fragmentManager.beginTransaction()

// Bir fragment ekle
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// Bir fragmenti değiştir (mevcut olanı kaldırır ve yenisini ekler)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// Bir fragmenti kaldır
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// if (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Geri Dönüş Yığınına ekle (kullanıcı "Geri" düğmesine basarak önceki fragmente dönebilir)
fragmentTransaction.addToBackStack(null) // Geri dönüş yığını etiketi (null olabilir)

// İşlemi tamamla
fragmentTransaction.commit() // Asenkron yürütme
// veya
// fragmentTransaction.commitNow() // Senkron yürütme
  • FragmentManager, fragmentleri yönetmek için kullanılır.
  • FragmentTransaction, işlemleri gerçekleştirmek için kullanılır (ekleme, kaldırma, değiştirme vb.).
  • Dinamik UI değişiklikleri için daha fazla esneklik sağlar.
  • Geri Dönüş Yığını yönetilebilir.

Kapsayıcı kullanımı:

Programatik olarak fragment ekleme veya değiştirme için genellikle Activity'nin XML düzeninde bir kapsayıcı kullanılır, örneğin FrameLayout veya LinearLayout:

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Daha sonra, Activity kodunda, fragment bu kapsayıcı içinde eklenir veya değiştirilir.

Önemli noktalar:

  • Fragment'in yaşam döngüsü, Activity'nin yaşam döngüsüyle yakından ilişkilidir.
  • FragmentManager, fragmentlerin yaşam döngüsünü ve durumunu yönetir.
  • Fragment işlemleri atomik olarak gerçekleştirilir (ya tüm işlem ya da hiçbiri).
  • Geri Dönüş Yığını kullanılırken addToBackStack() çağrılmalıdır.
  • supportFragmentManager kullanılarak AppCompatActivity'de fragmentlerle çalışılır.