【问题标题】:getChildFragmentManager() and support librariesgetChildFragmentManager() 和支持库
【发布时间】:2014-05-13 19:35:40
【问题描述】:

我在针对 API 级别 19 编译的应用程序中使用 getChildFragmentManager(),最低 SDK 设置为 14。

getChildFragmentManager() 是在 API 17 中引入的,因此在 API 级别 14、15 或 16 上运行的设备将在调用该方法时抛出 NoSuchMethodError

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

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

【问题讨论】:

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


    【解决方案1】:

    有没有办法让 getChildFragmentManager() 方法在 API 级别 17 之前的设备上工作?如果有,怎么做?

    使用来自 Android 支持包(android-support-v4.jarandroid.support.v4.app.Fragment)的片段的反向移植。

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

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

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

    我已经尝试使用 v4 和 v13 支持库进行干净的构建,但这似乎并不能解决问题。

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

    【讨论】:

    【解决方案2】:

    您可以尝试使用 SupportFragmentManager:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 2013-05-20
      • 1970-01-01
      相关资源
      最近更新 更多