[android] Fix NPE in PlacePageView.destroy()

Fixes #4606

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
This commit is contained in:
Roman Tsisyk 2023-02-25 11:43:14 +02:00
parent 8dbf76a9e1
commit 73391adba6

View file

@ -39,15 +39,12 @@ import app.organicmaps.downloader.CountryItem;
import app.organicmaps.downloader.DownloaderStatusIcon; import app.organicmaps.downloader.DownloaderStatusIcon;
import app.organicmaps.downloader.MapManager; import app.organicmaps.downloader.MapManager;
import app.organicmaps.editor.Editor; import app.organicmaps.editor.Editor;
import app.organicmaps.editor.OpeningHours;
import app.organicmaps.editor.data.Timetable;
import app.organicmaps.location.LocationHelper; import app.organicmaps.location.LocationHelper;
import app.organicmaps.location.LocationListener; import app.organicmaps.location.LocationListener;
import app.organicmaps.routing.RoutingController; import app.organicmaps.routing.RoutingController;
import app.organicmaps.settings.RoadType; import app.organicmaps.settings.RoadType;
import app.organicmaps.util.SharingUtils; import app.organicmaps.util.SharingUtils;
import app.organicmaps.util.StringUtils; import app.organicmaps.util.StringUtils;
import app.organicmaps.util.ThemeUtils;
import app.organicmaps.util.UiUtils; import app.organicmaps.util.UiUtils;
import app.organicmaps.util.concurrency.UiThread; import app.organicmaps.util.concurrency.UiThread;
import app.organicmaps.widget.ArrowView; import app.organicmaps.widget.ArrowView;
@ -138,7 +135,7 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
}; };
private PlacePageViewListener mPlacePageViewListener; private PlacePageViewListener mPlacePageViewListener;
private PlacePageViewModel viewModel; private PlacePageViewModel mViewModel;
private MapObject mMapObject; private MapObject mMapObject;
private static void refreshMetadataOrHide(String metadata, View metaLayout, TextView metaTv) private static void refreshMetadataOrHide(String metadata, View metaLayout, TextView metaTv)
@ -167,6 +164,7 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{ {
mViewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
return inflater.inflate(R.layout.place_page, container, false); return inflater.inflate(R.layout.place_page, container, false);
} }
@ -241,9 +239,8 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
mDownloaderInfo = mPreview.findViewById(R.id.tv__downloader_details); mDownloaderInfo = mPreview.findViewById(R.id.tv__downloader_details);
viewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class); mViewModel.getMapObject().observe(requireActivity(), this);
viewModel.getMapObject().observe(requireActivity(), this); mMapObject = mViewModel.getMapObject().getValue();
mMapObject = viewModel.getMapObject().getValue();
LocationHelper.INSTANCE.addListener(this); LocationHelper.INSTANCE.addListener(this);
} }
@ -256,11 +253,11 @@ public class PlacePageView extends Fragment implements View.OnClickListener,
} }
@Override @Override
public void onDestroy() public void onDestroyView()
{ {
super.onDestroy(); super.onDestroyView();
detachCountry(); detachCountry();
viewModel.getMapObject().removeObserver(this); mViewModel.getMapObject().removeObserver(this);
LocationHelper.INSTANCE.removeListener(this); LocationHelper.INSTANCE.removeListener(this);
} }