Update title in MarkerDetailActivity when viewpager changes.

This commit is contained in:
Dennis Guse
2019-09-15 00:29:37 +02:00
parent 95b7c701a2
commit 9c753034b4
3 changed files with 33 additions and 16 deletions
@@ -21,6 +21,7 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.fragment.app.FragmentStatePagerAdapter;
@@ -36,7 +37,7 @@ import de.dennisguse.opentracks.fragments.MarkerDetailFragment;
/** /**
* An activity to display marker detail info. * An activity to display marker detail info.
* * <p>
* Allows to swipe to the next and previous marker. * Allows to swipe to the next and previous marker.
* *
* @author Leif Hendrik Wilden * @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); final ViewPager viewPager = findViewById(R.id.maker_detail_activity_view_pager);
viewPager.setAdapter(new MarkerDetailPagerAdapter(getSupportFragmentManager())); final MarkerDetailPagerAdapter markerAdapter = new MarkerDetailPagerAdapter(getSupportFragmentManager());
if (markerIndex != -1) { viewPager.setAdapter(markerAdapter);
viewPager.setCurrentItem(markerIndex); 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 @Override
@@ -119,8 +134,13 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
@Override @Override
@NonNull @NonNull
public Fragment getItem(int position) { public Fragment getItem(int position) {
String title = getString(R.string.marker_title, position + 1, getCount()); return MarkerDetailFragment.newInstance(markerIds.get(position));
return MarkerDetailFragment.newInstance(markerIds.get(position), title); }
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return getString(R.string.marker_title, position + 1, getCount());
} }
@Override @Override
@@ -48,6 +48,7 @@ import de.dennisguse.opentracks.util.IntentUtils;
import de.dennisguse.opentracks.util.ListItemUtils; import de.dennisguse.opentracks.util.ListItemUtils;
import de.dennisguse.opentracks.util.StatsUtils; import de.dennisguse.opentracks.util.StatsUtils;
import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.StringUtils;
import de.dennisguse.opentracks.util.UnitConversions;
/** /**
* A fragment to show marker details. * 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 TAG = MarkerDetailFragment.class.getSimpleName();
private static final String KEY_MARKER_ID = "markerId"; private static final String KEY_MARKER_ID = "markerId";
private static final String KEY_TITLE = "title"; private static final long HIDE_TEXT_DELAY = 4 * UnitConversions.ONE_SECOND;
private static final long HIDE_TEXT_DELAY = 4000L; // 4 seconds
private ContentProviderUtils contentProviderUtils; private ContentProviderUtils contentProviderUtils;
private Handler handler; private Handler handler;
private ImageView photo; 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 bundle = new Bundle();
bundle.putLong(KEY_MARKER_ID, markerId); bundle.putLong(KEY_MARKER_ID, markerId);
bundle.putString(KEY_TITLE, title);
MarkerDetailFragment fragment = new MarkerDetailFragment(); MarkerDetailFragment fragment = new MarkerDetailFragment();
fragment.setArguments(bundle); fragment.setArguments(bundle);
@@ -120,8 +119,6 @@ public class MarkerDetailFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.marker_detail_fragment, container, false); 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); photo = view.findViewById(R.id.marker_detail_waypoint_photo);
textGradient = view.findViewById(R.id.marker_detail_waypoint_text_gradient); textGradient = view.findViewById(R.id.marker_detail_waypoint_text_gradient);
waypointInfo = view.findViewById(R.id.marker_detail_waypoint_info); waypointInfo = view.findViewById(R.id.marker_detail_waypoint_info);
@@ -23,11 +23,11 @@ package de.dennisguse.opentracks.util;
public class UnitConversions { public class UnitConversions {
// multiplication factor to convert seconds to milliseconds // 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 // Time
// 1 second in milliseconds // 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 // multiplication factor to convert milliseconds to seconds
public static final double MS_TO_S = 1 / S_TO_MS; public static final double MS_TO_S = 1 / S_TO_MS;
// multiplication factor to convert minutes to seconds // multiplication factor to convert minutes to seconds