3

Я делаю приложение, которое должно иметь minSdk = 15 и targetSdk = 21, поэтому я хочу использовать функции, предоставляемые библиотекой appcompat-v7.AppCompat v7: Должен ли я использовать Framework FragmentManager или SupportFragmentManager?

Я всегда задавался вопросом, следует ли мне использовать getFragmentManager или getSupportFragmentManager при использовании supportlibrary-v7.

Я столкнулся с небольшой проблемой сейчас: при использовании getFragmentManager (и, следовательно, с использованием фреймов фреймворка и фрагментации) я не смог вытащить заднюю часть, просто нажав на подставку - мне нужно было сделать backStackCount> 0 check и вручную popBackStack , иначе моя деятельность была просто закончена. Эта проблема была решена, когда я переключил свое маленькое приложение, чтобы использовать классы v4 (getSupportFragmentManager и т. Д.). Я думаю, что это хорошо, но я хотел бы иметь руководство/bestpractice, чтобы узнать, как идти и почему

Итак, моя деятельность наследуется от ActionBarActivity (в соответствии с AppCompat-Blog-Entry), и я использую новую панель инструментов, Я использую только v4-фрагменты (-Manager, -Transactions)?

Я не нашел для этого каких-либо рекомендаций или рекомендаций. И я не уверен, что следует учитывать при принятии решения между этими двумя: -/

+0

У меня была такая же проблема в моих приложениях, и ответ таков: используйте классы, которые библиотеки предоставляют о фрагментах. Поскольку существуют такие классы, как [FragmentPagerAdapter] (http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html), которые можно использовать только в библиотеках поддержки, поэтому разумно использовать все классы, которые поддерживают библиотеки, связанные с фрагментами. – eluleci

+1

На самом деле существует [v13.FragmentPagerAdapter] (https://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html), который работает с фреймами. Но все же это не настоящая ИМО. Как я уже сказал, я полностью переключился на v4 по причинам согласованности. – degill

ответ

5

Если вы наследуете свою деятельность от ActionBarActivity, вы всегда должны использовать getSupportFragmentManager(). Он автоматически перенаправляет ваши звонки на getFragmentManager(), если телефон поддерживает его (работает сот или позже), в противном случае он использует реализацию совместимости.

+0

Я использую appcompat-v7 не только из-за поддержки фрагмента (я знаю, что поддержка фрагментов была добавлена ​​до API 15). Основная причина в том, что я хочу использовать некоторые функции, представленные в API 21, например, на панели инструментов или в MaterialDesign-Theme. Итак, AFAIK Мне нужно использовать appcompat-v7. – degill

+0

В этом случае перейдите к 'ActionBarActivity'. Если вы планируете использовать панель инструментов, вам, скорее всего, понадобится метод 'setActionBar (...)', который недоступен до API 21, вместо этого используйте 'setSupportActionBar (...)'. – stealth

+0

Вы правы, мне нужно использовать метод setSupportActionBar(). Итак, в основном, из-за моего использования AppCompat, я должен использовать все методы поддержки? – degill

Смежные вопросы