【问题标题】:Map in fragment Android result in error片段Android中的映射导致错误
【发布时间】:2015-04-12 08:12:51
【问题描述】:

我尝试在滑动视图的片段中创建地图,但是使用此代码我在 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)' 在greetrack.estg.ipvc.greentrack.Mapa.onCreateView(Mapa.java:49)

这是我第一个使用地图的应用程序,可能有问题

【问题讨论】:

    标签: android google-maps android-fragments


    【解决方案1】:

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

    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 这是它的链接。 在 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);
        }
        }
    

    【讨论】:

    • 但是我的问题是我的应用程序在片段(滑动视图)中,所以我没有“扩展活动”有“扩展片段”,所以我有这个错误去尝试把你的代码:不兼容类型,不能将“android.support.v4.Fragment”转换为“com.google.android.gms.maps.MapFragment”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2014-12-18
    • 1970-01-01
    相关资源
    最近更新 更多