Activity ve Fragment Yönetimi: Temel Kavramlar ve Kullanımı

ibrahimcanerdogan
4 min readOct 26, 2024

--

Photo by Martin Adams on Unsplash

Activity, Android’de bir ekranı veya kullanıcı ile etkileşimi sağlayan bir bileşendir. Her Activity, uygulamada gösterilen bir ekranı temsil eder. Örneğin, bir giriş ekranı veya ana sayfa, birer Activity olabilir. Kullanıcıların gördüğü çoğu ekranın arka planında bir Activity çalışır.

➡️ Jetpack Compose: İleri Seviye Uygulama Geliştirme Rehberi 🚀

➡️ Android App Development with Google MLKIT 🚀

➡️ Kotlin Interview Bootcamp: From Zero to Android Mastery 2024 🚀

➡️ Türk Hava Yolları Uçuş Asistanı | Kotlin Android Geliştirme 🚀

1. Activity Nedir?

Activity, Android’de bir ekranı veya kullanıcı ile etkileşimi sağlayan bir bileşendir. Her Activity, uygulamada gösterilen bir ekranı temsil eder. Örneğin, bir giriş ekranı veya ana sayfa, birer Activity olabilir. Kullanıcıların gördüğü çoğu ekranın arka planında bir Activity çalışır.

a. Activity Yaşam Döngüsü

Activity’lerin bir yaşam döngüsü vardır, yani farklı durumlarda farklı işlevler yapabilirler. Android, Activity’nin durumuna göre belirli metotlar çağırır. İşte Activity yaşam döngüsünün ana aşamaları:

  • onCreate(): Activity ilk kez oluşturulduğunda çalışır. Genellikle burada arayüz ayarları yapılır.
  • onStart(): Activity görünür hale gelir ancak kullanıcı etkileşime geçmemiştir.
  • onResume(): Activity, kullanıcıyla etkileşime girmeye hazırdır.
  • onPause(): Activity başka bir ekrana geçilirken veya gizlenirken çağrılır.
  • onStop(): Activity tamamen görünmez olduğunda çağrılır.
  • onDestroy(): Activity sonlandırılmadan önce çalışır.

Bu aşamalar, Activity’nin yaşam döngüsündeki duruma göre nasıl davrandığını kontrol etmemizi sağlar.

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Activity oluşturulduğunda yapılacak işlemler burada tanımlanır
}

2. Fragment Nedir?

Fragment, bir Activity içinde çalışan bağımsız bir kullanıcı arayüzü bileşenidir. Fragment’ler, Activity’ler gibi arayüz öğeleri içerir ancak kendi başlarına birer ekran değildir. Birden fazla Fragment, tek bir Activity içinde yer alabilir ve dinamik arayüzler oluşturmak için kullanılabilir.

a. Fragment’in Avantajları

Fragment yapısı, özellikle tablet gibi geniş ekranlarda dinamik arayüzler oluşturmayı kolaylaştırır. Fragment kullanmanın başlıca avantajları şunlardır:

  • Esneklik: Aynı Activity içinde birden fazla Fragment kullanarak dinamik arayüzler oluşturabilirsiniz.
  • Yeniden Kullanılabilirlik: Fragment’ler bağımsız yapılar olduğundan, farklı Activity’ler içinde tekrar kullanılabilir.
  • Daha Kolay Yönetim: Uygulama modüllerini küçük parçalara ayırarak, her bir Fragment için bağımsız görevler tanımlayabilirsiniz.

b. Fragment Yaşam Döngüsü

Fragment’lerin de yaşam döngüleri vardır, ancak Activity’den biraz farklıdır:

  • onAttach(): Fragment, Activity’ye eklendiğinde çağrılır.
  • onCreateView(): Fragment’in kullanıcı arayüzü oluşturulduğunda çağrılır.
  • onActivityCreated(): Activity oluşturulduktan sonra çalışır.
  • onStart(): Fragment görünür hale gelir.
  • onResume(): Fragment aktif olur ve kullanıcıyla etkileşime girmeye hazırdır.
  • onPause(): Fragment arka plana alındığında çağrılır.
  • onStop(): Fragment tamamen görünmez olduğunda çağrılır.
  • onDestroyView(): Fragment’in arayüzü yok edildiğinde çalışır.
  • onDetach(): Fragment, Activity’den ayrıldığında çalışır.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_example, container, false)
}
}

3. Activity ve Fragment Arasındaki Farklar

  • Yaşam Döngüsü: Activity’nin yaşam döngüsü daha kapsamlı ve karmaşıktır. Fragment’ler ise Activity’ye bağımlı olarak çalışır ve daha hafif bir yaşam döngüsüne sahiptir.
  • Kapsam: Activity, bir ekranı temsil ederken; Fragment, Activity içinde bir parça olarak bulunur ve diğer Fragment’lerle aynı Activity içinde çalışabilir.
  • Kullanım Alanları: Activity daha geniş, tek bir ekran deneyimi sunarken; Fragment, bir Activity içerisinde yeniden kullanılabilir bileşenler yaratmak için idealdir.

4. Fragment ile Activity Arasında Veri Aktarımı

Fragment’ler bağımsız bileşenler olarak çalışsa da, bazen bir Activity’den bilgi almaları veya Activity’ye bilgi göndermeleri gerekebilir. Bunun için genellikle aşağıdaki yöntemler kullanılır:

  • Arguments Kullanımı: Fragment’e veri göndermek için Bundle yapısı kullanılır.
val fragment = ExampleFragment()
val args = Bundle()
args.putString("key", "value")
fragment.arguments = args
  • Activity Metotlarını Kullanma: Fragment içinde activity değişkenini kullanarak, içinde bulunduğu Activity’e erişim sağlayabilir ve Activity içindeki metotları çağırabilirsiniz.
(activity as MainActivity).someMethod()

5. Fragment Yönetimi: FragmentTransaction

Fragment’leri Activity içine eklemek, kaldırmak veya değiştirmek için FragmentTransaction yapısı kullanılır. FragmentTransaction, bir Fragment’te değişiklik yapmamıza ve bu işlemleri bir geri alma (backstack) ile yönetmemize olanak tanır.

  • Fragment Ekleme: add() metodu ile Fragment eklenir.
  • Fragment Değiştirme: replace() metodu ile mevcut bir Fragment değiştirilir.
  • Fragment Kaldırma: remove() metodu ile Fragment kaldırılır.
  • Backstack Kullanımı: addToBackStack() metodu ile geri tuşuna basıldığında Fragment’in geri dönebilmesi sağlanır.

Örnek bir Fragment ekleme işlemi:

val fragment = ExampleFragment()
supportFragmentManager.beginTransaction()
.add(R.id.fragment_container, fragment)
.addToBackStack(null)
.commit()

6. Fragmentler Arası Geçiş Yönetimi

Uygulama içerisinde çok sayıda Fragment bulunduğunda kullanıcı deneyimini yönetmek için geçişleri organize etmek önemlidir. Navigation Component gibi Jetpack bileşenleri, Fragment’ler arası geçişleri kolaylaştırmak için kullanılır. Bu bileşen, uygulamanın arayüz yapısını görsel olarak düzenlemenize olanak tanır.

Navigation Component ile, XML dosyasındaki nav_graph yapısını kullanarak geçişleri tanımlayabilir ve belirli aksiyonları kullanarak Fragment’ler arası veri aktarımı gerçekleştirebilirsiniz.

7. ViewModel ve LiveData ile Activity ve Fragment Yönetimi

Fragment ve Activity’ler arasında veri paylaşımı yaparken ViewModel ve LiveData bileşenlerini kullanmak çok faydalıdır. ViewModel, Activity veya Fragment yok edilse bile veri saklamaya devam eder, bu sayede veri kaybı yaşanmaz.

Örnek bir ViewModel kullanımı:

class SharedViewModel : ViewModel() {
val data = MutableLiveData<String>()
}

Fragment içinde ViewModel’e erişmek için:

val viewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
viewModel.data.observe(viewLifecycleOwner) { value ->
// Gelen veriyi işleyin
}

Sonuç

Activity ve Fragment yapıları, Android uygulama geliştirme sürecinde kullanıcı deneyimini düzenlemek için temel bileşenlerdir. Activity, uygulamanın ana ekranlarını temsil ederken, Fragment, bu ekranlar içinde daha küçük ve bağımsız birimler oluşturmaya yarar. Bu kılavuzda ele aldığımız temel kavramlar, Activity ve Fragment yapılarının mantığını ve uygulama içindeki kullanımını anlamanız için iyi bir başlangıç olacaktır.

Activity ve Fragment yönetimine hakim olarak Android uygulamalarınızı daha dinamik ve esnek hale getirebilir, kullanıcı deneyimini daha etkili bir şekilde yönetebilirsiniz.

İbrahim Can Erdoğan

LINKEDIN

YOUTUBE

UDEMY

GITHUB

--

--

ibrahimcanerdogan
ibrahimcanerdogan

Written by ibrahimcanerdogan

Hi, My name is Ibrahim, I am developing ebebek android app within Ebebek. I publish various articles in the field of programming and self-improvement.

No responses yet