getChildFragmentManager()和支持库

时间:2014-05-13 19:35:40

标签: android android-fragments android-nested-fragment

我正在使用针对API级别19进行编译的应用中的getChildFragmentManager(),并将最低SDK设置为14.

在API 17中引入了

getChildFragmentManager(),因此在调用该方法时,以API级别14,15或16运行的设备将抛出NoSuchMethodError

我确实查看了有关此问题的所有其他StackOverflow问题,但他们似乎都没有回答这个问题:有没有办法让getChildFragmentManager()方法在API级别17之前的设备上运行?如果是这样,怎么样?

该方法似乎不包含在v4或v13支持库中。我已尝试使用v4和v13支持库进行干净构建,但这似乎无法解决问题。

2 个答案:

答案 0 :(得分:17)

  

有没有办法让getChildFragmentManager()方法在API级别17之前的设备上运行?如果是这样,怎么样?

使用Android支持包(android-support-v4.jarandroid.support.v4.app.Fragment)中的片段的backport。

  

该方法似乎不包含在v4或v13支持库中。

是的,在FragmentActivity上,您需要使用Activity基类才能使用片段反向移植。

它位于backport的Fragment类中,用于管理该片段的子片段。

  

我尝试过使用v4和v13支持库的干净版本,但这似乎无法解决问题。

要么您没有更改为 FragmentActivity Fragment后端,要么您的支持库JAR已旧。 Here is a sample project演示了使用 FragmentActivity Fragment后端及其getChildFragmentManager()

答案 1 :(得分:0)

您可以尝试使用SupportFragmentManager:

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