diff --git a/src/main/java/de/dennisguse/opentracks/MarkerDetailActivity.java b/src/main/java/de/dennisguse/opentracks/MarkerDetailActivity.java index 2d62b9e4e..b35b40289 100644 --- a/src/main/java/de/dennisguse/opentracks/MarkerDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/MarkerDetailActivity.java @@ -21,6 +21,7 @@ import android.os.Bundle; import android.util.Log; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; @@ -36,7 +37,7 @@ import de.dennisguse.opentracks.fragments.MarkerDetailFragment; /** * An activity to display marker detail info. - * + *
* Allows to swipe to the next and previous marker. * * @author Leif Hendrik Wilden @@ -83,11 +84,25 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark } } - ViewPager viewPager = findViewById(R.id.maker_detail_activity_view_pager); - viewPager.setAdapter(new MarkerDetailPagerAdapter(getSupportFragmentManager())); - if (markerIndex != -1) { - viewPager.setCurrentItem(markerIndex); - } + final ViewPager viewPager = findViewById(R.id.maker_detail_activity_view_pager); + final MarkerDetailPagerAdapter markerAdapter = new MarkerDetailPagerAdapter(getSupportFragmentManager()); + viewPager.setAdapter(markerAdapter); + viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + } + + @Override + public void onPageSelected(int position) { + setTitle(markerAdapter.getPageTitle(position)); + } + + @Override + public void onPageScrollStateChanged(int state) { + } + }); + viewPager.setCurrentItem(markerIndex == -1 ? 0 : markerIndex); } @Override @@ -119,8 +134,13 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark @Override @NonNull public Fragment getItem(int position) { - String title = getString(R.string.marker_title, position + 1, getCount()); - return MarkerDetailFragment.newInstance(markerIds.get(position), title); + return MarkerDetailFragment.newInstance(markerIds.get(position)); + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + return getString(R.string.marker_title, position + 1, getCount()); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java index 116464435..f07607269 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java @@ -48,6 +48,7 @@ import de.dennisguse.opentracks.util.IntentUtils; import de.dennisguse.opentracks.util.ListItemUtils; import de.dennisguse.opentracks.util.StatsUtils; import de.dennisguse.opentracks.util.StringUtils; +import de.dennisguse.opentracks.util.UnitConversions; /** * A fragment to show marker details. @@ -58,8 +59,7 @@ public class MarkerDetailFragment extends Fragment { private static final String TAG = MarkerDetailFragment.class.getSimpleName(); private static final String KEY_MARKER_ID = "markerId"; - private static final String KEY_TITLE = "title"; - private static final long HIDE_TEXT_DELAY = 4000L; // 4 seconds + private static final long HIDE_TEXT_DELAY = 4 * UnitConversions.ONE_SECOND; private ContentProviderUtils contentProviderUtils; private Handler handler; private ImageView photo; @@ -91,10 +91,9 @@ public class MarkerDetailFragment extends Fragment { } }; - public static MarkerDetailFragment newInstance(long markerId, String title) { + public static MarkerDetailFragment newInstance(long markerId) { Bundle bundle = new Bundle(); bundle.putLong(KEY_MARKER_ID, markerId); - bundle.putString(KEY_TITLE, title); MarkerDetailFragment fragment = new MarkerDetailFragment(); fragment.setArguments(bundle); @@ -120,8 +119,6 @@ public class MarkerDetailFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.marker_detail_fragment, container, false); - getActivity().setTitle(getArguments().getString(KEY_TITLE)); - photo = view.findViewById(R.id.marker_detail_waypoint_photo); textGradient = view.findViewById(R.id.marker_detail_waypoint_text_gradient); waypointInfo = view.findViewById(R.id.marker_detail_waypoint_info); diff --git a/src/main/java/de/dennisguse/opentracks/util/UnitConversions.java b/src/main/java/de/dennisguse/opentracks/util/UnitConversions.java index e593bd6df..ab6c1b124 100644 --- a/src/main/java/de/dennisguse/opentracks/util/UnitConversions.java +++ b/src/main/java/de/dennisguse/opentracks/util/UnitConversions.java @@ -23,11 +23,11 @@ package de.dennisguse.opentracks.util; public class UnitConversions { // multiplication factor to convert seconds to milliseconds - public static final double S_TO_MS = 1000.0; + public static final long S_TO_MS = 1000; // Time // 1 second in milliseconds - public static final long ONE_SECOND = (long) UnitConversions.S_TO_MS; + public static final long ONE_SECOND = UnitConversions.S_TO_MS; // multiplication factor to convert milliseconds to seconds public static final double MS_TO_S = 1 / S_TO_MS; // multiplication factor to convert minutes to seconds