在我的下面的代码中,getMap()返回null,这将停止应用程序。如果我不对地图做任何事情(即删除最后两行),它会正确显示。知道为什么吗?感谢。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager fragmentManager = getSupportFragmentManager();
SupportMapFragment mapFragment = SupportMapFragment.newInstance();
mapFragmentId = mapFragment.getId();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.my_container, mapFragment);
transaction.commit();
mMap = mapFragment.getMap();
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
}
答案 0 :(得分:3)
重复:SupportMapFragment.getmap() returns null
检查布局xml文件。我注意到我没有引用: 机器人:名称=" com.google.android.gms.maps.SupportMapFragment" 反而: 机器人:名称=" com.google.android.gms.maps.MapFragment"
名称应为: 机器人:名称=" com.google.android.gms.maps.SupportMapFragment"
答案 1 :(得分:2)
如果getMap()
返回null,那是因为Google尚未就绪,或 GooglePlayServices 已更新。你最好使用类似的东西:
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if(resultCode != ConnectionResult.SUCCESS)
{
Builder builder = new AlertDialog.Builder(Main.this);
builder.setMessage(getResources().getString(R.string.error_getting_maps));
builder.setCancelable(true);
builder.setPositiveButton("OK", null);
AlertDialog dialog = builder.create();
dialog.show();
} else {
_map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
[ETC]
}