2012-03-13 11 views
5

İşte benim kullanıldığı durumdur:Bir Android parçası örneğini farklı parçalarda nasıl yeniden kullanabilirim?

Ben ActionBar Navigation Tabs kullanarak 3 sekme oluşturmak gerekiyor ve bunu gerçekleştirmek için ActionBarSherlock kullanıyorum. 3 sekmenin her biri kendi Fragment'dur. Ancak, sekmelerin her birinde (benim durumumda, ürün başlığı, açıklama) gösterilen bazı ortak bilgiler vardır. Bu genel bilgiler için başka bir Fragman yarattım ve bu Fragmanı, this gibi ana Fragman düzenlerinin her birinde referanslıyorum. Ben alır ve ortak bilgi görüntüler Fragment örneğini yeniden kullanmak istediğiniz

:

İşte benim sorundur. Aşağıdaki kodu kullanıyorum, ancak her zaman ana parçaların her birinde ortak parçanın yeni bir örneğini oluşturuyor gibi görünüyor.

FragmentManager fm = getFragmentManager(); 
    f = (ProductDetailsInfoFragment) fm.findFragmentByTag("prodinfo"); 

    if (f == null) { 
     Log.d(TAG, "fragment not found...creating new instance"); 

     f = new ProductDetailsInfoFragment(); 
     f.setTargetFragment(this, 0); 
     fm.beginTransaction().replace(R.id.prod_info_fragment, f, "prodinfo").commit();   
    } 
+0

Aynı Parça parçasını yeniden kullanamazsınız, başka bir parçada kullanmak için yeni bir tane oluşturmanız gerekir. –

+0

Ugh, bundan korktum. Veriyi birden fazla kez almadığım için önbelleğe almak için bazı mantık eklemek zorunda kalacağım. – Sanjeev

cevap

2

İsterseniz parçaları paylaşabilirsiniz. ActionBar.TabListener uygulamasını ve onTabSelected uygulamasında kullanmak istediğiniz parçayı seçmeniz gerekecek.

Böyle bir şey yapabileceğini: https://gist.github.com/anonymous/5415274

A iyi seçenek aralarında paylaşmak ayrı bir nesne bu kesimlerin her iki tarafından ihtiyaç duyulan veriyi saklamaktır. Bu, istenirse, kendisine bağlı bir UI'ye sahip olmadan alma işlemini test etmenize izin verecektir. Bu aynı zamanda iki parçanın da ihtiyaç duydukları şekilde birbirinden uzaklaşmasına izin vererek, tek bir parçada her iki eylem için gerekli olan tüm kodları tutmaya karşı tek bir amaç haline getirmektedir.

İlgili konular