ListFragment支持库GetSupportFragmentManager未定义

时间:2012-06-26 13:26:50

标签: java android android-fragments

我有一个列表片段(导入v4支持库,构建目标是2.3.3 api 11) 以及我的代码中的以下问题,当目标是3.0并且我没有使用该库时工作正常。

Fragment frag1 = new ExampleFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.contentframe, frag1);
ft.commit();

现在我收到编译错误

"Type mismatch: cannot convert from ExampleFragment to Fragment"

它告诉我改变" Fragment"到ExampleFragment(例如)

ExamplesFragment frag1 = new ExamplesFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.contentframe, frag1);
ft.commit();

然后我遇到ft.replace命令有错误的问题:

The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, Fragment_PVAnn)

并且它告诉我将第一行中的ExamplesFragment更改回Fragment,这样圆圈四处转动

2 个答案:

答案 0 :(得分:27)

你应该使用

getActivity().getSupportFragmentManager()

如果仍然存在问题,请确保您的Activity extends FragmentActivity

如果仍然存在问题,

  1. 删除所有您的导入
  2. 使用重新导入Ctrl + Shift + O
  3. 在每次名称冲突时,请确保从support.v4.*导入, android.*

答案 1 :(得分:2)

当您扩展Fragment时,您必须确保扩展Fragment包空间中的v4。检查FragmentFragmentActivity等的导入,如果您看到它们在包名中导入了WITHOUT .v4,则表示错误。

另外,如果您将项目的android库设置为2.3而不是4.0.x,那么您将很快看到您是否使用了不正确的类,因为您将收到编译错误,可以通过使用来修复来自android支持jar的v4类(希望你也包含在你的项目中)