Android

Fragment Kullanımı – Fragmentlar Arası İletişim

Geliştirdiğiniz uygulamalarda kullanmış olduğunuz Fragment’ ların birbirleriyle iletişime geçmesi gerekebilir. Örneğin kullanıcının uygulama içerisinde yer alan listeye tıklayarak buna bağlı olarak bir içeriğin görüntülemesi gerekebilir. Böyle durumlarda yapılması gereken en sağlıklı yol ise, Fragment’ ların birbirleriyle doğrudan değil Activity üzerinden iletişime geçmesidir. İki fragment hiç bir şekilde birbirleriyle doğrudan iletişime geçmemelidirler. Şİmdi gelin bu işlemler nasıl yapılıyor onu görelim.

İlk olarak yapılması gereken işlem bir Interface tanımlamak olmalıdır.

Daha sonra ise interface aracılığıyla iletişimi başlatacak olan Fragment içerisinde yer alan onAttach callback metodu içerisinde container Activity’ nin bu tanımlamış olduğumuz Interface’ i implement ettiğinden emin olmalıyız.

Şimdi fragment onArticleSelected() metodunu kullanarak yada tanımlanan Interface içerisinde yer alan herhangi bir başka metodu kullanarak activity’ e iletmek istediği mesajı iletebilir. Örnek bir kullanım durumu aşağıdaki gibi olabilir.

Şimdi sıra geldi tanımlanmış olan Interface’ in Activity tarafından implement edilmesine. Fragment içerisinde yer alan callback metodundan sağlanan içeriğin Activity içerisinde kullanılabilmesi için Activity’ nin interface’ i kesinlikle implement etmesi gerekmektedir.

Daha sonra burada yer alan position bilgisine göre detay sayfasında istediğiniz gibi içeriği kullanabilirsiniz.  Örnek bir kullanım durumunu aşağıda paylaşıyorum.

İşlem örnekte görebileceğiniz üzere son derece kolay.

Şimdi sizlere bir başka alternatif kullanımdan bahsetmek istiyorum. Bazı durumlarda tanımladığınız Fragment bazı argümanlar isteyebilir. Bu gibi durumlarda genel olarak kullanılan tasarım anlayışı ise, argüman içeren bir Fragment static bir newInstance metodu kullanılarak oluşturulması şeklinde özetlenebilir. Burada ki temel mantık oluşturulan Fragment’ ın kesinlikle bir tane argüman içermeyen constructor’ a sahip olması gerekmektedir.

Daha sonrasında ise onCreate metodu içerisinde bu değerleri şu şekilde kullanabilirsiniz.

Fragment’ in  dinamik olarak oluşturulması ise aşağıda paylaştığım şekilde olmalıdır.

Fragment Nasıl Tanımlanır?

Bir fragment oluşturmak için, Activity yapısında olduğu gibi bir tane XML dosyasına, bir tane de Fragment yapısını kontrol edebilmek amacıyla  Java dosyasına ihtiyacımız vardır.

İlk olarak her zaman olduğu gibi temel anlamda bir tane xml dosyası oluşturabilirsiniz.  Bu tanımladığımız layout yapısını activity’ nin bir parçasını olarak düşünebilirsiniz.

Bu XML dosyasına ait olan Fragment’ i kontrol etmek için kullanacağımız Java dosyasımız ise;

 Activity içerisine Fragment nasıl yerleştirilir?

Bir Activity içerisine fragment yerleştirmenin iki yolu bulunmaktadır. Birincisi dinamik olarak Java kodları içerisinden eklemek, diğeri ise statik olarak XML içerisinden eklemektir.

Statik olarak eklemek

Fragment’ ı statik olarak ekleme işlemi son derece basittir. Yapmanız gereken tek işlem activity xml dosyasına <fragment> tag’i ni eklemektir.

 Dinamik olarak eklemek

İkinci olarak ise, Java dosyamız içerisinden FragmentManager sınıfını kullanarak dinamik olarak eklemektir. FragmentManager ve FragmentTransaction sınıfları sizlere Fragment’ lar ile işlem yaparken add, remove ve replace işlemlerini yapmanıza olanak sağlamaktadır. Dinamik olarak eklemek için yapmanız gereken şey, daha sonra add, remove, replace işlemlerini gerçekleştirebilmek amacıyla bir placeholder FrameLayout kullanmanızdır.

Bu tanımlama işlemini gerçekleştirdikten sonra ise FragmentManager kullanarak framelayout yerine fragment‘ ın yerleşmesi işlemi gerçekleştirecek olan FragmentTransaction oluşturmaktır.

Kullanmanız gereken bütün kod satırları bu kadar. Şimdi bunları teker teker inceleme zamanı.

İlk olarak transaction işlemini başlatalım.

Daha sonra ise placeholder yerine Fragment’ ın yerleşmesi işlemini sağlamak için replace metodunu kullanalım.  Burada alternatif olarak aşağıda paylaştığım yapı da kullanılabilir.

ve en son olarak işlemin gerçekleşmesini sağlıyoruz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu