Podczas pracy z fragmentami korzystałem z klasy złożonej ze statycznych metod, które definiują działania na fragmentach. Dla każdego projektu mogę mieć klasę o nazwie FragmentActions
, która zawiera metody podobne do następujących:
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();
}
Zazwyczaj mam jedną metodę na ekran aplikacji. Robię coś takiego podczas pracy z małymi lokalnymi bazami danych (zwykle SQLite), więc zastosowałem to do fragmentów, które wydają się mieć podobny przepływ pracy; Ale nie jestem z tego żonaty.
W jaki sposób zorganizowałeś swoje aplikacje, aby współpracowały z interfejsem API Fragments i jakie (jeśli w ogóle) wzorce projektowe uważasz, że możesz to zrobić?
design-patterns
android
Anthony Naddeo
źródło
źródło
Odpowiedzi:
Akceptowanym wzorcem jest posiadanie metody fabrycznej w niestandardowej klasie fragmentów (zwykle nazywanej newInstance (), ale hej, wybór dealera). Twoja klasa fragmentów powinna wyglądać mniej więcej tak:
Następnie, gdy utworzysz fragment i dodasz go do backstacka, zamiast mówić:
MyFragment fragment = new MyFragment ();
Możesz użyć metody fabrycznej zamiast słowa kluczowego „new”.
źródło