Android SupportMapFragment.getMap()返回null

时间:2013-09-03 14:20:15

标签: android google-maps-android-api-2

在我的下面的代码中,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);
    }

2 个答案:

答案 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]
        }