Это ситуация:Поиск значок GPS никогда не исчезает удерживаемый фрагмент в Android с MyLocationOverlay (osmdroid)
У меня есть деятельность с PagerAdapter, содержащей три фрагмента. Это позволяет изменять ориентацию экрана.
Один из этих фрагментов имеет mapView, созданный с помощью библиотеки osmdroid, и этот фрагмент сохраняется (setRetainInstance (true)). При каждой ориентации изменилось, событие onCreateView обжигают снова:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
fragmentView = (LinearLayout) inflater.inflate(R.layout.main,
container, false);
mapView = (MapView) fragmentView.findViewById(R.id.practice_mapview);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setUseSafeCanvas(true);
setHardwareAccelerationOff();
mapController = (MapController) mapView.getController();
[...]
mLocationOverlay = new MyLocationOverlay(getActivity(), mapView);
mLocationOverlay.setDrawAccuracyEnabled(true);
[...]
mapView.invalidate();
return fragmentView;
}
При запуске все работает нормально, но когда я повернуть телефон предложение «mLocationOverlay = новый MyLocationOverlay (getActivity(), MAPview);» является и это означает, что при закрытии приложения значок GPS никогда не исчезает.
Если вы не поворачиваете телефон, значок исчезает, когда приложение закрывается.
Это то, что я на мероприятии OnPause:
@Override
public void onPause() {
mLocationOverlay.disableCompass();
if (this.getActivity().isFinishing()) {
disableMyLocation();
releaseLocationOverlay();
}
cleanMapViewCache();
}
private void disableMyLocation() {
if (mLocationOverlay.isMyLocationEnabled() == true)
mLocationOverlay.disableMyLocation();
if (mLocationOverlay.isFollowLocationEnabled() == true)
mLocationOverlay.disableFollowLocation();
}
private void releaseLocationOverlay() {
if (mLocationOverlay != null) {
mapView.getOverlays().remove(mLocationOverlay);
mLocationOverlay = null;
}
}
private void cleanMapViewCache() {
mapView.getTileProvider().clearTileCache();
System.gc();
}
Si ан-эль Evento onCreateView Hago Эсте sencillo управления эль проблема- desaparece:
Если я ставлю этот контроль в случае onCreateView, проблема исчезает:
if (this.getActivity().isFinishing())
mLocationOverlay = new MyLocationOverlay(getActivity(), mapView);
Но, между прочим, я не в состоянии к центру больше:
mapController.animateTo(mLocationOverlay.getMyLocation());
Есть идеи? Что-то я делаю неправильно?
Если вам нужно больше кода, вам больше нечего сказать. Спасибо!