diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java index 35fa3ab0a..3ac6ee2eb 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java @@ -65,8 +65,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos private TrackDataHub trackDataHub; private ViewPager pager; - // From intent. - private Track.Id trackId; + private Track track; @Override protected void onCreate(Bundle savedInstanceState) { @@ -88,7 +87,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos public Fragment getItem(int position) { switch (position) { case 0: - return new StatisticsRecordedFragment(); + return StatisticsRecordedFragment.newInstance(track.getId()); case 1: return ChartFragment.newInstance(false); case 2: @@ -133,8 +132,8 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos // Update UI this.invalidateOptionsMenu(); - if (trackId.isValid()) { - trackDataHub.loadTrack(trackId); + if (track != null) { + trackDataHub.loadTrack(track.getId()); } } @@ -172,7 +171,6 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos public boolean onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.track_detail_markers).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); menu.findItem(R.id.track_detail_resume_track).setVisible(!PreferencesUtils.isRecording(this)); - Track track = contentProviderUtils.getTrack(trackId); setTitle(track != null ? track.getName() : ""); return super.onPrepareOptionsMenu(menu); } @@ -182,29 +180,29 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos Intent intent; switch (item.getItemId()) { case R.id.track_detail_share: - intent = IntentUtils.newShareFileIntent(this, trackId); + intent = IntentUtils.newShareFileIntent(this, track.getId()); intent = Intent.createChooser(intent, null); startActivity(intent); return true; case R.id.track_detail_menu_show_on_map: - IntentDashboardUtils.startDashboard(this, false, trackId); + IntentDashboardUtils.startDashboard(this, false, track.getId()); return true; case R.id.track_detail_markers: intent = IntentUtils.newIntent(this, MarkerListActivity.class) - .putExtra(MarkerListActivity.EXTRA_TRACK_ID, trackId); + .putExtra(MarkerListActivity.EXTRA_TRACK_ID, track.getId()); startActivity(intent); return true; case R.id.track_detail_edit: intent = IntentUtils.newIntent(this, TrackEditActivity.class) - .putExtra(TrackEditActivity.EXTRA_TRACK_ID, trackId); + .putExtra(TrackEditActivity.EXTRA_TRACK_ID, track.getId()); startActivity(intent); return true; case R.id.track_detail_delete: - deleteTracks(trackId); + deleteTracks(track.getId()); return true; case R.id.track_detail_resume_track: Intent newIntent = IntentUtils.newIntent(TrackRecordedActivity.this, TrackRecordingActivity.class) - .putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId); + .putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, track.getId()); startActivity(newIntent); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); finish(); @@ -238,7 +236,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos } private void handleIntent(Intent intent) { - trackId = intent.getParcelableExtra(EXTRA_TRACK_ID); + Track.Id trackId = intent.getParcelableExtra(EXTRA_TRACK_ID); Waypoint.Id waypointId = intent.getParcelableExtra(EXTRA_MARKER_ID); if (waypointId != null) { @@ -255,6 +253,8 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos Log.e(TAG, "TrackDetailActivity needs EXTRA_TRACK_ID."); finish(); } + + track = contentProviderUtils.getTrack(trackId); } public void chooseActivityType(String category) { @@ -263,7 +263,6 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos @Override public void onChooseActivityTypeDone(String iconValue) { - Track track = contentProviderUtils.getTrack(trackId); String category = getString(TrackIconUtils.getIconActivityType(iconValue)); TrackUtils.updateTrack(this, track, null, category, null, contentProviderUtils); } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java index 334b102a2..bfa9412f3 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java @@ -33,11 +33,8 @@ import androidx.fragment.app.Fragment; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.TrackRecordedActivity; -import de.dennisguse.opentracks.content.TrackDataHub; -import de.dennisguse.opentracks.content.TrackDataListener; import de.dennisguse.opentracks.content.data.Track; -import de.dennisguse.opentracks.content.data.TrackPoint; -import de.dennisguse.opentracks.content.data.Waypoint; +import de.dennisguse.opentracks.content.provider.ContentProviderUtils; import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.util.PreferencesUtils; import de.dennisguse.opentracks.util.StringUtils; @@ -49,10 +46,13 @@ import de.dennisguse.opentracks.util.TrackIconUtils; * @author Sandor Dornbush * @author Rodrigo Damazio */ -public class StatisticsRecordedFragment extends Fragment implements TrackDataListener { +public class StatisticsRecordedFragment extends Fragment { + + private static final String TRACK_ID_KEY = "trackId"; private TrackStatistics trackStatistics = null; private String category = ""; + private Track track; private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (preferences, key) -> { if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) { @@ -88,6 +88,24 @@ public class StatisticsRecordedFragment extends Fragment implements TrackDataLis private TextView speedMovingValue; private TextView speedMovingUnit; + public static StatisticsRecordedFragment newInstance(Track.Id trackId) { + Bundle bundle = new Bundle(); + bundle.putParcelable(TRACK_ID_KEY, trackId); + + StatisticsRecordedFragment fragment = new StatisticsRecordedFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Track.Id trackId = getArguments().getParcelable(TRACK_ID_KEY); + ContentProviderUtils contentProviderUtils = new ContentProviderUtils(getContext()); + track = contentProviderUtils.getTrack(trackId); + } + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -140,17 +158,13 @@ public class StatisticsRecordedFragment extends Fragment implements TrackDataLis super.onResume(); PreferencesUtils.register(getContext(), sharedPreferenceChangeListener); - TrackDataHub trackDataHub = ((TrackRecordedActivity) getActivity()).getTrackDataHub(); - trackDataHub.registerTrackDataListener(this, true, false, true, true); + loadStatistics(); } @Override public void onPause() { super.onPause(); PreferencesUtils.unregister(getContext(), sharedPreferenceChangeListener); - - TrackDataHub trackDataHub = ((TrackRecordedActivity) getActivity()).getTrackDataHub(); - trackDataHub.unregisterTrackDataListener(this); } @Override @@ -180,8 +194,7 @@ public class StatisticsRecordedFragment extends Fragment implements TrackDataLis speedMovingUnit = null; } - @Override - public void onTrackUpdated(final Track track) { + public void loadStatistics() { if (isResumed()) { getActivity().runOnUiThread(() -> { if (isResumed()) { @@ -193,41 +206,6 @@ public class StatisticsRecordedFragment extends Fragment implements TrackDataLis } } - @Override - public void clearTrackPoints() { - // We don't care. - } - - @Override - public void onSampledInTrackPoint(TrackPoint trackPoint) { - // We don't care. - } - - @Override - public void onSampledOutTrackPoint(TrackPoint trackPoint) { - // We don't care. - } - - @Override - public void onNewTrackPointsDone() { - // We don't care. - } - - @Override - public void clearWaypoints() { - // We don't care. - } - - @Override - public void onNewWaypoint(Waypoint wpt) { - // We don't care. - } - - @Override - public void onNewWaypointsDone() { - // We don't care. - } - private void updateUI() { String trackIconValue = TrackIconUtils.getIconValue(getContext(), category); diff --git a/src/main/res/layout/statistics_recorded.xml b/src/main/res/layout/statistics_recorded.xml index 0be5a6019..92e53a07c 100644 --- a/src/main/res/layout/statistics_recorded.xml +++ b/src/main/res/layout/statistics_recorded.xml @@ -5,6 +5,7 @@ style="@style/StatsScrollView"> @@ -209,5 +210,14 @@ app:layout_constraintRight_toLeftOf="@+id/guideline3" tools:text="km/h" /> + + + \ No newline at end of file