Android'de FragmentManager ile çalışmak için kullanışlı tasarım desenleri


10

Parçalarla çalışırken, parçalar üzerindeki eylemleri tanımlayan statik yöntemlerden oluşan bir sınıf kullanıyorum. Herhangi bir proje FragmentActionsiçin, aşağıdakine benzer yöntemler içeren bir sınıfım olabilir :

public static void showDeviceFragment(FragmentManager man){
    String tag = AllDevicesFragment.getFragmentTag();

    AllDevicesFragment fragment = (AllDevicesFragment)man.findFragmentByTag(tag);

    if(fragment == null){
        fragment = new AllDevicesFragment();
    }

    FragmentTransaction t = man.beginTransaction();
    t.add(R.id.main_frame, fragment, tag);

    t.commit();
}

Her uygulama ekranı için genellikle bir yöntemim olur. Küçük yerel veritabanları (genellikle SQLite) ile çalışırken böyle bir şey yapmak, bu yüzden benzer bir iş akışı var gibi görünüyor, parçalara uygulandı; Bununla evli deđilim.

Uygulamalarınızı Fragment API'sı ile arayüz oluşturacak şekilde nasıl düzenlediniz ve bunu (varsa) hangi tasarım modellerinin uyguladığını düşünüyorsunuz?


1
Neden her türlü parçayı göstermekle sorumlu bir dersiniz var? İçindeki Fragment sınıfında statik bir yöntem olmamalı mı?
Piotr

Yanıtlar:


3

Kabul edilen kalıp, özel parça sınıfınızda bir fabrika yöntemine sahip olmaktır (genellikle newInstance () olarak adlandırılır, ancak bayinin seçimi). Yani parça sınıfınız şöyle görünmelidir:

public class MyFragment extends Fragment
{
    public static MyFragment newInstance()
    {
        MyFragment newFragment = new MyFragment();
        // add any bundle arguments here if needed
        return newFragment;
    }
    // rest of fragment class...
}

Ardından, bir parça oluşturup şunu söylemek yerine backstack'e eklediğinizde:

MyFragment fragmanı = yeni MyFragment ();

'Yeni' anahtar kelime yerine fabrika yöntemini kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.