From 96371336f4458d70ff9e8aa89f86917efc33ec66 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 13 Dec 2020 17:12:03 +0100 Subject: [PATCH] MarkerDetailFragment: load markerId once in onCreate(). --- .../opentracks/fragments/MarkerDetailFragment.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java index b13b4282f..26a8389af 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java @@ -62,6 +62,8 @@ public class MarkerDetailFragment extends Fragment { private ContentProviderUtils contentProviderUtils; private Handler handler; + + private Marker.Id markerId; private Marker marker; private MarkerDetailFragmentBinding viewBinding; @@ -104,7 +106,7 @@ public class MarkerDetailFragment extends Fragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - Marker.Id markerId = getArguments().getParcelable(KEY_MARKER_ID); + markerId = getArguments().getParcelable(KEY_MARKER_ID); if (markerId == null) { Log.d(TAG, "invalid marker id"); getParentFragmentManager().popBackStack(); @@ -153,6 +155,13 @@ public class MarkerDetailFragment extends Fragment { viewBinding = null; } + @Override + public void onDestroy() { + super.onDestroy(); + markerId = null; + marker = null; + } + @Override public void setMenuVisibility(boolean menuVisible) { super.setMenuVisibility(menuVisible); @@ -182,7 +191,6 @@ public class MarkerDetailFragment extends Fragment { @Override public boolean onOptionsItemSelected(MenuItem item) { - Marker.Id markerId = getArguments().getParcelable(KEY_MARKER_ID); //TODO Should only happen in onCreate? FragmentActivity fragmentActivity = getActivity(); if (item.getItemId() == R.id.marker_detail_show_on_map) { @@ -216,7 +224,7 @@ public class MarkerDetailFragment extends Fragment { private void updateMarker(boolean refresh) { if (refresh || marker == null) { - marker = contentProviderUtils.getMarker(getArguments().getParcelable(KEY_MARKER_ID)); //TODO Should only happen in onCreate? + marker = contentProviderUtils.getMarker(markerId); if (marker == null) { Log.d(TAG, "marker is null"); getParentFragmentManager().popBackStack();