TrackRecordingActivity keeps Track.Id value instead of track object. Every time the track is needed it gets it. Fixes #435.

This commit is contained in:
Román
2020-09-26 16:47:51 +02:00
parent f5308e4287
commit fbb9d21e73
3 changed files with 28 additions and 22 deletions
@@ -55,11 +55,11 @@ import de.dennisguse.opentracks.util.TrackUtils;
*/
public class TrackRecordedActivity extends AbstractListActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, ConfirmDeleteDialogFragment.ConfirmDeleteCaller, TrackActivityDataHubInterface {
private static final String TAG = TrackRecordedActivity.class.getSimpleName();
public static final String EXTRA_TRACK_ID = "track_id";
public static final String EXTRA_MARKER_ID = "marker_id";
private static final String TAG = TrackRecordedActivity.class.getSimpleName();
private static final String CURRENT_TAB_TAG_KEY = "current_tab_tag_key";
// The following are set in onCreate.
@@ -67,7 +67,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
private TrackDataHub trackDataHub;
private ViewPager pager;
private Track track;
private Track.Id trackId;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -100,8 +100,8 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
// Update UI
this.invalidateOptionsMenu();
if (track != null) {
trackDataHub.loadTrack(track.getId());
if (trackId != null) {
trackDataHub.loadTrack(trackId);
}
}
@@ -139,6 +139,7 @@ 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);
}
@@ -148,29 +149,29 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
Intent intent;
switch (item.getItemId()) {
case R.id.track_detail_share:
intent = IntentUtils.newShareFileIntent(this, track.getId());
intent = IntentUtils.newShareFileIntent(this, trackId);
intent = Intent.createChooser(intent, null);
startActivity(intent);
return true;
case R.id.track_detail_menu_show_on_map:
IntentDashboardUtils.startDashboard(this, false, track.getId());
IntentDashboardUtils.startDashboard(this, false, trackId);
return true;
case R.id.track_detail_markers:
intent = IntentUtils.newIntent(this, MarkerListActivity.class)
.putExtra(MarkerListActivity.EXTRA_TRACK_ID, track.getId());
.putExtra(MarkerListActivity.EXTRA_TRACK_ID, trackId);
startActivity(intent);
return true;
case R.id.track_detail_edit:
intent = IntentUtils.newIntent(this, TrackEditActivity.class)
.putExtra(TrackEditActivity.EXTRA_TRACK_ID, track.getId());
.putExtra(TrackEditActivity.EXTRA_TRACK_ID, trackId);
startActivity(intent);
return true;
case R.id.track_detail_delete:
deleteTracks(track.getId());
deleteTracks(trackId);
return true;
case R.id.track_detail_resume_track:
Intent newIntent = IntentUtils.newIntent(TrackRecordedActivity.this, TrackRecordingActivity.class)
.putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, track.getId());
.putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId);
startActivity(newIntent);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
finish();
@@ -204,7 +205,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
}
private void handleIntent(Intent intent) {
Track.Id trackId = intent.getParcelableExtra(EXTRA_TRACK_ID);
trackId = intent.getParcelableExtra(EXTRA_TRACK_ID);
Marker.Id markerId = intent.getParcelableExtra(EXTRA_MARKER_ID);
if (markerId != null) {
@@ -221,8 +222,6 @@ 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) {
@@ -232,6 +231,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
@Override
public void onChooseActivityTypeDone(String iconValue) {
String category = getString(TrackIconUtils.getIconActivityType(iconValue));
Track track = contentProviderUtils.getTrack(trackId);
TrackUtils.updateTrack(this, track, null, category, null, contentProviderUtils);
}
@@ -251,9 +251,9 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
public Fragment getItem(int position) {
switch (position) {
case 0:
return StatisticsRecordedFragment.newInstance(track.getId());
return StatisticsRecordedFragment.newInstance(trackId);
case 1:
return IntervalsFragment.newInstance(track.getId());
return IntervalsFragment.newInstance(trackId);
case 2:
return ChartFragment.newInstance(false);
case 3:
@@ -51,7 +51,8 @@ public class StatisticsRecordedFragment extends Fragment {
private TrackStatistics trackStatistics;
private String category = "";
private Track track;
private Track.Id trackId;
private ContentProviderUtils contentProviderUtils;
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)) {
@@ -103,9 +104,8 @@ public class StatisticsRecordedFragment extends Fragment {
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);
trackId = getArguments().getParcelable(TRACK_ID_KEY);
contentProviderUtils = new ContentProviderUtils(getContext());
}
@Override
@@ -184,6 +184,7 @@ public class StatisticsRecordedFragment extends Fragment {
if (isResumed()) {
getActivity().runOnUiThread(() -> {
if (isResumed()) {
Track track = contentProviderUtils.getTrack(trackId);
trackStatistics = track != null ? track.getTrackStatistics() : null;
category = track != null ? track.getCategory() : "";
updateUI();
@@ -35,17 +35,22 @@ public class TrackUtils {
}
public static void updateTrack(Context context, Track track, String name, String category, String description, ContentProviderUtils contentProviderUtils) {
boolean update = false;
if (name != null) {
track.setName(name);
update = true;
}
if (category != null) {
track.setCategory(category);
track.setIcon(TrackIconUtils.getIconValue(context, category));
update = true;
}
if (description != null) {
track.setDescription(description);
update = true;
}
if (update) {
contentProviderUtils.updateTrack(track);
}
contentProviderUtils.updateTrack(track);
}
}