From a2531c86517d729e25f4acdfd017c9e511f01ed3 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Tue, 24 Jun 2025 23:56:07 +0200 Subject: [PATCH] Cleanup: MarkerDetailFragment uses MenuProvider. --- .../ui/markers/MarkerDetailActivity.java | 1 - .../ui/markers/MarkerDetailFragment.java | 88 ++++++++++--------- 2 files changed, 46 insertions(+), 43 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailActivity.java b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailActivity.java index 2fc639882..dbde6b68b 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailActivity.java @@ -98,7 +98,6 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark @Override public void onPageSelected(int position) { viewBinding.markerDetailToolbar.setTitle(markerAdapter.getPageTitle(position)); -// viewBinding.bottomAppBarLayout.bottomAppBarTitle.setText(markerAdapter.getPageTitle(position)); TOOD } @Override diff --git a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java index d7849b972..130b81e70 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java +++ b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java @@ -31,6 +31,7 @@ import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import androidx.annotation.NonNull; +import androidx.core.view.MenuProvider; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; @@ -113,7 +114,6 @@ public class MarkerDetailFragment extends Fragment { } contentProviderUtils = new ContentProviderUtils(getActivity()); handler = new Handler(); - setHasOptionsMenu(true); } @Override @@ -129,9 +129,54 @@ public class MarkerDetailFragment extends Fragment { handler.postDelayed(hideText, HIDE_TEXT_DELAY.toMillis()); } }); + + requireActivity().addMenuProvider(new MenuProvider() { + @Override + public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) { + menuInflater.inflate(R.menu.marker_detail, menu); + shareMarkerImageMenuItem = menu.findItem(R.id.marker_detail_share); + updateMarker(false); + updateMenuItems(); + } + + @Override + public boolean onMenuItemSelected(@NonNull MenuItem item) { + FragmentActivity fragmentActivity = getActivity(); + + if (item.getItemId() == R.id.marker_detail_show_on_map) { + IntentUtils.showCoordinateOnMap(getContext(), marker); + return true; + } + + if (item.getItemId() == R.id.marker_detail_edit) { + Intent intent = IntentUtils.newIntent(fragmentActivity, MarkerEditActivity.class) + .putExtra(MarkerEditActivity.EXTRA_MARKER_ID, markerId); + startActivity(intent); + return true; + } + + if (item.getItemId() == R.id.marker_detail_share) { + if (marker.hasPhoto()) { + Intent intent = ShareUtils.newShareFileIntent(getContext(), marker.getId()); + intent = Intent.createChooser(intent, null); + startActivity(intent); + } + return true; + } + + if (item.getItemId() == R.id.marker_detail_delete) { + DeleteMarkerDialogFragment.showDialog(getChildFragmentManager(), markerId); + return true; + } + + return false; + } + }, getViewLifecycleOwner()); + return viewBinding.getRoot(); } + @Override public void onResume() { super.onResume(); @@ -175,52 +220,11 @@ public class MarkerDetailFragment extends Fragment { } } - @Override - public void onCreateOptionsMenu(@NonNull Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.marker_detail, menu); - shareMarkerImageMenuItem = menu.findItem(R.id.marker_detail_share); - updateMarker(false); - updateMenuItems(); - } - private void updateMenuItems() { if (shareMarkerImageMenuItem != null) shareMarkerImageMenuItem.setVisible(marker.hasPhoto()); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - FragmentActivity fragmentActivity = getActivity(); - - if (item.getItemId() == R.id.marker_detail_show_on_map) { - IntentUtils.showCoordinateOnMap(getContext(), marker); - return true; - } - - if (item.getItemId() == R.id.marker_detail_edit) { - Intent intent = IntentUtils.newIntent(fragmentActivity, MarkerEditActivity.class) - .putExtra(MarkerEditActivity.EXTRA_MARKER_ID, markerId); - startActivity(intent); - return true; - } - - if (item.getItemId() == R.id.marker_detail_share) { - if (marker.hasPhoto()) { - Intent intent = ShareUtils.newShareFileIntent(getContext(), marker.getId()); - intent = Intent.createChooser(intent, null); - startActivity(intent); - } - return true; - } - - if (item.getItemId() == R.id.marker_detail_delete) { - DeleteMarkerDialogFragment.showDialog(getChildFragmentManager(), markerId); - return true; - } - - return super.onOptionsItemSelected(item); - } - private void updateMarker(boolean refresh) { if (refresh || marker == null) { marker = contentProviderUtils.getMarker(markerId);