使用更改(或缺少更改)更新GoogleMaps Fragment

时间:2018-06-29 08:56:17

标签: google-maps android-studio android-fragments

我的应用程序在选项卡显示中有5个片段,其中一个是GoogleMaps片段,它确实可用于显示地图,用户所在位置的位置提示以及该位置的相机更新。但是,在片段之间切换时,我的位置信息丢失

这是我的代码,所以我可以更好地解释我要做什么:

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

    View view = inflater.inflate(R.layout.fragment_map, null, false);
   SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager().findFragmentById(R.id.mapView);
    if (mapFragment == null) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        mapFragment = SupportMapFragment.newInstance();
        fragmentTransaction.replace(R.id.mapView, mapFragment).commit();
    }
    mapFragment.getMapAsync(this);
    return view;
}


public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    if (ActivityCompat.checkSelfPermission(getActivity(), 
    Manifest.permission.ACCESS_FINE_LOCATION) == 
    PackageManager.PERMISSION_GRANTED) {

    getDeviceLocation();

    mMap.setMyLocationEnabled(true);

    }


}

我尝试实现getDeviceLocation()方法mMap.setMyLocationEnabled(true)之前的ifonCreateView()和周围的return view;实例在onMapReady函数内部行,但是在Logcat中收到空对象引用错误(在mMap对象上),随后发生崩溃。当将那些代码位移动到其他地方setMyLocationEnabled(true)getDeviceLocation()时,只会发生该错误。

我认为这是因为在检索视图之前,mMap仍然为null。基本上,如何在不遇到空错误引用的情况下保持位置blip的状态而不会调用setMyLocationEnabled(true)方法?因为似乎无法在return view之前的任何地方实现获取位置的代码,而不会出现空错误。

很抱歉格式错误,问题冗长。我只是不知道如何将Google Maps API代码与自己的计划集成在一起,因此,我非常感谢你们提供的任何输入

0 个答案:

没有答案