FragmentTransaction中的add()方法无法应用?

3

由于以下错误,无法添加到片段事务中,您该如何解决?

add() in FragmentTransaction cannot be applied to:
Expected Parameters: Actual Arguments:
int R.id.mapWithOverlay  
android.support.v4.app.Fragment _mapFragment  (com.google.android.gms.maps.MapFragment)
String "map"

以下是代码:

代码如下:

android.support.v4.app.FragmentTransaction fragTx = getSupportFragmentManager().beginTransaction();
if (fragTx != null) {
     _mapFragment = MapFragment.newInstance(mapOptions);
     fragTx.add(R.id.mapWithOverlay, _mapFragment, "map");
     fragTx.commit();
} else {
     Toast.makeText(this, "Could not display the map", Toast.LENGTH_SHORT).show();
}

提前感谢您。


请查看此答案:https://dev59.com/kWYr5IYBdhLWcg3wXJEK - Nathaniel D. Waggoner
2个回答

7
你是否正在使用来自支持包的SupportMapFragment而不是MapFragment
常规的MapFragment无法与SupportFragmentManager一起使用。
看到区别了吗?
private class MyMap1 extends SupportMapFragment {

}

private class MyMap2 extends MapFragment {

}

谢谢您的回答,那么您认为fragTx变量有问题吗? - Apqu
不行。你的MapFragment类继承了错误版本的MapFragment。 - Kuffs

0

我改成了以下内容以使其正常工作,希望这能帮助其他人?

FragmentTransaction fragTx = getFragmentManager().beginTransaction();
if (fragTx != null) {
     _mapFragment = MapFragment.newInstance(mapOptions);
     fragTx.add(R.id.mapWithOverlay, _mapFragment, "map");
     fragTx.commit();
} else {
     Toast.makeText(this, "Could not display the map", Toast.LENGTH_SHORT).show();
}

只有在不使用支持包的情况下才能正常工作。由于getFragmentManager在Api 11之前的版本中不存在,因此您无法使用此方法针对早期版本的Android进行操作。 - Kuffs
啊,我明白了,我得研究一下这两者之间的区别。谢谢你的帮助 :-) - Apqu
如果你想要针对早期版本进行开发,你需要实现我的答案并使用SupportMapFragment。 - Kuffs
好的,谢谢。我会接受你的答案,但是我也会留下我的答案,因为它可能会帮助那些只想针对后期版本的人。 - Apqu
根据所针对的Android版本,两个答案都可能是正确的。我假设您想使用支持包,因为您的项目已经引用了它。另外,您可能希望选择不与类名冲突的对象名称,例如MapFragment。这可能会令人困惑,并且您可能会意外地导入错误的命名空间。 - Kuffs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接