片段Android中的地图导致错误

时间:2015-04-11 23:40:00

标签: android google-maps android-fragments

我尝试在滑动视图中的片段中创建地图,但是使用此代码我在logcat中有错误,这是代码:

public class Mapa extends Fragment {

    private static final double MARKER_LATITUDE = 42.027325;
    private static final double MARKER_LONGITUDE = -8.640842;
    GoogleMap map;
    private FragmentActivity myContext;

    public Mapa() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static Mapa newInstance() {
        Mapa fragment = new Mapa();
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View android = inflater.inflate(R.layout.mapa, container, false);
        final LatLng position = new LatLng(MARKER_LATITUDE, MARKER_LONGITUDE);


        // camera position
        map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener()
        {
            @Override
            public void onCameraChange(CameraPosition arg0)
            {
                CameraUpdate cu = CameraUpdateFactory.newLatLngZoom(position, 17);
                map.animateCamera(cu);
                map.setOnCameraChangeListener(null);
                map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            }
        });
        return android;
    }

    @Override
    public void onAttach(Activity activity) {
        myContext=(FragmentActivity) activity;
        super.onAttach(activity);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Fragment f = getFragmentManager().findFragmentById(R.id.mapFragment);
        if (f != null)
            getFragmentManager().beginTransaction().remove(f).commit();
    }

}

这是logcat错误:

  

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void com.google.android.gms.maps.GoogleMap.setOnCameraChangeListener(com.google.android.gms.maps.GoogleMap $ OnCameraChangeListener)'               at greetrack.estg.ipvc.greentrack.Mapa.onCreateView(Mapa.java:49)

这是我第一次使用地图的应用程序,也许有些事情是错误的

1 个答案:

答案 0 :(得分:0)

你没有设置地图,它是空的。所以空引用。

Map = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.mapView)).getMap();

是一种方式,或者可能跟随谷歌推荐。这是一个地图片段xml。

我输入的xml文件不显示https://developers.google.com/maps/documentation/android/start#get_an_android_certificate_and_the_google_maps_api_key这里是它的linkk。      在MainActivity.java中添加以下代码。

    package com.example.mapdemo;

    import android.app.Activity;
    import android.os.Bundle;

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    }