Bei der Arbeit mit Fragmenten habe ich eine Klasse verwendet, die aus statischen Methoden besteht, die Aktionen für Fragmente definieren. Für jedes Projekt habe ich möglicherweise eine Klasse namens FragmentActions
, die ähnliche Methoden enthält:
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();
}
Normalerweise habe ich eine Methode pro Anwendungsbildschirm. Ich mache so etwas, wenn ich mit kleinen lokalen Datenbanken (normalerweise SQLite) arbeite, also habe ich es auf Fragmente angewendet, die einen ähnlichen Workflow zu haben scheinen. Ich bin aber nicht damit verheiratet.
Wie haben Sie Ihre Anwendungen für die Schnittstelle mit der Fragment-API organisiert und welche (falls vorhanden) Entwurfsmuster gelten Ihrer Meinung nach dafür?
design-patterns
android
Anthony Naddeo
quelle
quelle
Antworten:
Das akzeptierte Muster besteht darin, eine Factory-Methode in Ihrer benutzerdefinierten Fragmentklasse zu haben (normalerweise newInstance () genannt, aber nach Wahl des Händlers). Ihre Fragmentklasse sollte also ungefähr so aussehen:
Wenn Sie dann ein Fragment erstellen und es dem Backstack hinzufügen, anstatt zu sagen:
MyFragment fragment = new MyFragment ();
Sie können die Factory-Methode anstelle des Schlüsselworts 'new' verwenden.
quelle