我有一个列表片段(导入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,这样圆圈四处转动
答案 0 :(得分:27)
你应该使用
getActivity().getSupportFragmentManager()
如果仍然存在问题,请确保您的Activity extends FragmentActivity
。
如果仍然存在问题,
support.v4.*
导入,不 android.*
。答案 1 :(得分:2)
当您扩展Fragment
时,您必须确保扩展Fragment
包空间中的v4
。检查Fragment
,FragmentActivity
等的导入,如果您看到它们在包名中导入了WITHOUT .v4,则表示错误。
另外,如果您将项目的android库设置为2.3而不是4.0.x,那么您将很快看到您是否使用了不正确的类,因为您将收到编译错误,可以通过使用来修复来自android支持jar的v4类(希望你也包含在你的项目中)