Обновление фрагмента GoogleMaps с изменениями (или их отсутствием) - PullRequest
0 голосов
/ 29 июня 2018

Мое приложение имеет 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) и окружающий if кейс, который находится внутри функции onMapReady прямо перед строкой onCreateView() методов return view;, но я получаю ошибку ссылки на нулевой объект (на объекте mMap) в Logcat с последующим сбоем. Эта ошибка только возникает при перемещении этих битов кода в другое место: setMyLocationEnabled(true) и getDeviceLocation().

Я предполагаю, что это потому, что mMap по-прежнему нулевой, пока не будет получено представление. По сути, как сохранить сообщение о местонахождении от вызова метода setMyLocationEnabled(true) без обращения к нулевой ссылке на ошибку? Потому что не похоже, что я могу реализовать код получения местоположения где-нибудь до return view без получения нулевой ошибки.

Извините за плохое форматирование и длинный вопрос. Я просто не могу понять, как интегрировать код API Карт Google с моими собственными планами, поэтому я очень ценю любой ввод , который вы, ребята, должны предложить.

...