我已经研究这个问题几个小时了。
我的简单应用程序在片段中显示谷歌地图。在某些操作上,我希望在此地图上叠加一个片段,因此在收到 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 编译到 minSDKversion 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 天了,理智转瞬即逝 :)
提前致谢!