尝试在我正在构建的活动中组合一个小MapFragment,但是在完成所有工作时遇到了一些麻烦。我知道Maps api和Play服务都安装正确,因为我做了测试教程,一切正常。
在文档here之后,我遇到了以下问题:在我的setUpMapIfNeeded方法中,我可以使用getFragmentManager()
或getSupportFragmentManager()
。当我使用getFragmentManager()
时,Eclipse很酷,但是当我运行时,我得到NoSuchMethodError
说该方法未定义。当我选择getSupportFragmentManager()
时,Eclipse不喜欢它并且给我错误“无法从Fragment转换为MapFragment”。那是什么交易?有什么建议吗?
private void setUpMapIfNeeded() {
//Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
mMap = ((MapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
if (mMap != null) {
//do things to the map
mMap.addMarker(new MarkerOptions().position(LOCATION).title(EXTRA_URL));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LOCATION,15));
mMap.getUiSettings().setZoomControlsEnabled(false);
}
}
}
如果我能提供任何其他代码,请告诉我,我很乐意快速发布。
答案 0 :(得分:79)
我可以使用getFragmentManager()或getSupportFragmentManager()。
这里不应该有争论。如果您可以使用getSupportFragmentManager()
,那么您正在使用Android支持包的片段backport,这是您必须使用的方法。
当我选择getSupportFragmentManager()时,Eclipse不喜欢它并且给我错误“无法从Fragment转换为MapFragment”。
那是因为你不应该使用MapFragment
。您正在使用Android Support包的片段backport,因此您必须使用SupportMapFragment
。
答案 1 :(得分:0)
这是我必须做的,因为我在11级工作;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import android.support.v4.app.FragmentActivity;
public class MapaActivity extends FragmentActivity {
private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mapa);
map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapa)).getMap();
}
}
答案 2 :(得分:0)
import android.support.v4.app.FragmentActivity;
您可以扩展FragmentActivity
公共类MainActivity extends FragmentActivity实现了LocationListener {
}
并且它还访问getSupportFragmentManager();
SupportMapFragment fm =(SupportMapFragment)getSupportFragmentManager()。findFragmentById(R.id.map);
答案 3 :(得分:0)
将您的依赖项更改为:
implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'