web-dev-qa-db-fra.com

getChildFragmentManager () et les bibliothèques de support

J'utilise la getChildFragmentManager() dans une application compilant par rapport au niveau 19 de l'API, avec le SDK minimal défini à 14. 

getChildFragmentManager() a été introduit dans l'API 17, de sorte que les périphériques fonctionnant aux niveaux 14, 15 ou 16 de l'API émettront une NoSuchMethodError lors de l'appel de la méthode.

J'ai parcouru toutes les autres questions de StackOverflow concernant ce problème, mais aucune ne semble répondre à cette question: existe-t-il un moyen de faire en sorte que la méthode getChildFragmentManager() fonctionne sur les périphériques de niveau pré-API 17? Si c'est le cas, comment?

La méthode ne semble pas être incluse dans les bibliothèques de support v4 ou v13. J'ai essayé des versions propres avec les bibliothèques de support à la fois v4 et v13, mais cela ne semble pas résoudre le problème.

15
Mark

y a-t-il un moyen d'obtenir que la méthode getChildFragmentManager () fonctionne sur les périphériques de niveau pré-API 17? Si c'est le cas, comment?

Utilisez le backport de fragments du package de support Android (Android-support-v4.jar, Android.support.v4.app.Fragment).

La méthode ne semble pas être incluse dans les bibliothèques de support v4 ou v13. 

Oui, il s'agit, sur FragmentActivity, de la classe de base Activity à utiliser pour pouvoir utiliser le backport de fragments.

C'est sur la classe Fragment du backport, pour la gestion des fragments enfants de ce fragment.

J'ai essayé des versions propres avec les bibliothèques de support à la fois v4 et v13, mais cela ne semble pas résoudre le problème.

Soit vous n'avez pas changé pour FragmentActivity le backport Fragment ou les fichiers JAR de votre bibliothèque de support sont anciens. Voici un exemple de projet démontrant l'utilisation de FragmentActivity le backport Fragment et sa getChildFragmentManager().

17
CommonsWare

Vous pouvez essayer le SupportFragmentManager à la place:

yourFragment = (YourFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.playListFragment)
0
user2288580