GetChildFragmentManager() и библиотеки поддержки
Я использую getChildFragmentManager()
в приложении, которое компилируется против уровня API 19, при этом минимальный SDK установлен на 14.
getChildFragmentManager()
был введен в API 17, поэтому устройства, запущенные на уровнях API 14, 15 или 16, будут бросать NoSuchMethodError
при вызове метода.
Я просмотрел все другие вопросы StackOverflow по этой проблеме, но ни один из них, похоже, не ответил на этот вопрос: есть ли способ заставить метод getChildFragmentManager()
работать на уровне pre-API устройств 17? Если да, то как?
Этот метод, похоже, не включен в библиотеки поддержки v4 или v13. Я пробовал чистые сборки как с библиотеками поддержки v4, так и с v13, но это, похоже, не решает проблему.
Ответы
Ответ 1
есть ли способ заставить метод getChildFragmentManager() работать на уровне pre-API устройств 17? Если да, то как?
Используйте backport фрагментов из пакета поддержки Android (android-support-v4.jar
, android.support.v4.app.Fragment
).
Этот метод, похоже, не включен в библиотеки поддержки v4 или v13.
Да, это, на FragmentActivity
, базовый класс Activity
, который вы должны использовать для использования обратного порта фрагментов.
Он находится в классе Fragment
из backport, для управления дочерними фрагментами этого фрагмента.
Я пробовал чистые сборки как с библиотеками поддержки v4, так и с v13, но это, похоже, не решает проблему.
Либо вы не изменили на FragmentActivity
backport, либо ваши JAR-библиотеки поддержки стали старыми. Вот пример проекта, демонстрирующий использование FragmentActivity
backport Fragment
и его getChildFragmentManager()
.
Ответ 2
Вместо этого вы можете попробовать SupportFragmentManager:
yourFragment = (YourFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.playListFragment)