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)