При работе с фрагментами я использовал класс, состоящий из статических методов, которые определяют действия над фрагментами. Для любого данного проекта у меня может быть класс с именем FragmentActions
, который содержит методы, подобные следующим:
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();
}
Я обычно использую один метод для каждого экрана приложения. Я делаю что-то подобное, когда работаю с небольшими локальными базами данных (обычно SQLite), поэтому я применил это к фрагментам, которые, похоже, имеют схожий рабочий процесс; Я не женат на этом, хотя.
Как вы организовали свои приложения для взаимодействия с API фрагментов, и какие (если таковые имеются) шаблоны проектирования, по вашему мнению, применимы для этого?
design-patterns
android
Энтони Наддео
источник
источник
Ответы:
Принятый шаблон должен иметь фабричный метод внутри вашего пользовательского класса фрагмента (обычно он называется newInstance (), но это выбор дилера). Так что ваш класс фрагмента должен выглядеть примерно так:
Затем, когда вы создаете фрагмент и добавляете его в backstack, вместо того, чтобы говорить:
Фрагмент MyFragment = новый фрагмент MyFragment ();
Вы можете использовать фабричный метод вместо ключевого слова «new».
источник