Мое приложение имеет 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 с моими собственными планами, поэтому я очень ценю любой ввод , который вы, ребята, должны предложить.