Fragmentlar arası iletişim — FragmentResult

Fevzi Ömür Tekin
2 min readDec 12, 2020

--

Merhabalar,

Sizlere, bu yazımda fragmentler arasında veri alışverişi yapmamıza yarayan FragmentResult’dan bahsedeceğim.

FragmentResult nedir, Ne gibi durumlarda kullanabiliriz, nasıl kullanılır sorularına cevap vermeye çalışacağım.

FragmentResult nedir, açıklayarak başlayalım.

FragmentResult nedir?

Android de son güncellemeler ile target(setTargetFragment()/getTargetFragment()) yapılarını artık desteklemediğini duymuştuk. Bu yapılara alternatif olarak birkaç çözüm sunuldu. Bunlardan biri de FragmentResult yapılarıdır.

FragmentResult, fragmentlar arası veri iletişimini sağlayan yapılardır. İletişim iki fragment arasında ortak olan fragmentManager yapısı üzerinden sağlanır.

Hangi durumlarda FragmentResult kullanmalıyız?

İki fragment arasında veri alışverişi yapacaksınız ama viewmodel veya argumentlar ile uğraşmak istemiyorsunuz, bu durumda fragment result tam size göre.
Daha ayrıntılı bir örnek vermek gerekirse, benim de size mini bir uygulamasında yapacağım ve kullanacağım senaryodaki gibi durumlar da kullanabilirsiniz.

Senaryo : Navigation Component kullanan bir uygulamamız var. Bu uygulamada bir fragment üzerinde dialog açıp dialogdan dönen sonuca göre de fragment üzerinde değişiklik yapmak istiyoruz.

Kullanımı

Öncelikle uygulamada navigation component kullanacağımdan bahsetmiştim.

Kullandığım graph yapısı;

görüldüğü üzere çok basit bir yapı kurdum. Sadece bir fragment ve dialogdan oluşuyor.

Fragment yapımdan bahsedersek;

HomeFragment.kt

Yukarıdaki kod da görüldüğü üzere,
setFragmentResultListener ile dönen sonucu dinliyorum. Sonuç bize key ve bundle datası halinde geliyor. Bunu da handle ediyoruz.

Bu verinin gönderildiği yer DialogFragmentımıza bakarsak;

HomeDialog.kt

Dialog daki setFragmentResult içerisinde ise dialogdan dönen sonucu yolluyorum.

Yararlanılan Kaynaklar ve Sonuç

Uygulamanın kaynak kodları

Örneklerimizde görüldüğü üzere, FragmentResult bize basit kullanımı ile fragmentlar arası iletişimde oldukça iyi bir alternatif sağlıyor.

Umarım faydalı olmuştur, sonraki yazılarda görüşmek üzere. 🖐🏼

--

--