【问题标题】:Can't get Nested Fragments to work, Can't resolve getChildFragmentManager无法让嵌套片段工作,无法解析 getChildFragmentManager
【发布时间】:2014-03-26 15:53:21
【问题描述】:

我已经研究这个问题几个小时了。

我的简单应用在片段中显示谷歌地图。在某些操作上,我希望在此地图上叠加一个片段,因此在收到 onClickListener 事件后,我正在尝试运行:

void addfragment() {

    Fragment placeDetails = new PlaceDetailsFragment();
    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
    transaction.add(R.id.details, placeDetails).commit();

}

根据http://developer.android.com/about/versions/android-4.2.html#NestedFragments 的示例

我自动导入了以下类:

import android.app.Fragment;
import android.app.FragmentTransaction;

除了 getChildFragmentManager 之外,每个类型和方法都可以解析。在进行了一些挖掘之后,我不得不猜测 getChildFragmentManager 不是普通 Fragment 库的一部分,但我必须安装支持库,尤其是 v4。于是我安装了v7,其中也包含了v4 jar,然后回去重新导入片段类:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;

GetChildFragmentManager 仍然无法解决。

我尝试手动添加

导入android.support.v4.app.FragmentManager;

因为 getChildFragmentManager 是一个片段方法,应该返回一个 FragmentManager,但仍然没有解析。

我觉得好像我做错了什么,谷歌搜索对我没有多大帮助。他们一直在谈论将 v4.jar 移动到 ActionBarSherlock 的 lib 目录,但我在这个项目中没有也不需要它。稍后我可能会得到一个普通的操作栏,但我不明白为什么嵌套片段需要它。

另外,我正在使用 API 18 编译到 minSDK 版本 18 和 targetSDK 版本 18,那么为什么我什至需要支持库?这是 4.2 的功能,SDK 17,它也应该在 SDK 18 中,对吗?如文档中所述,支持库的使用是否仅适用于较低的 SDK?

The Android Support Library also now supports nested fragments,
so you can implement nested fragment designs on Android 1.6 and higher.

我做错了什么?有人有任何想法或解决方案吗?我已经玩了好几个小时了,现在已经超过 2 天了,理智转瞬即逝 :)

提前致谢!

【问题讨论】:

  • 确保您发布的 addfragment() 方法属于您的自定义 Fragment 类(不是 Activity,不是其他任何东西)。你能验证一下吗?
  • 是的,你是对的。我在活动中使用它。我真是个笨蛋:)如果您可以发表评论作为答案,我会将其标记为正确。

标签: java android android-fragments android-support-library android-nested-fragment


【解决方案1】:

确保您也从 android.support.v4.app 包中导入 FragmentManager。

import android.support.v4.app.FragmentManager;

我没有您的代码的完整视图。希望这能解决您的问题。

【讨论】:

  • 感谢您的回答,但 kiruwka 的评论是正确的;我没有在 Fragment 类中使用它,而是在 Activity 中使用它。
  • 没问题。根据您的设计,您可以将片段添加到片段中。在这种情况下,您需要在父片段上调用 ​​getChildFragmentManager() 来获取片段管理器。您需要导入 FragmentManager 表单支持库 v4 包才能工作。当然,如果你的 Fragment 在一个 Activity 中,那么你将调用 getFragmentManager 来检索 Fragment Manager。
猜你喜欢
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多