Bugfix: crash when opening Marker Detail.

Introduced in 5b4b54694c
This commit is contained in:
Dennis Guse
2025-12-02 17:53:15 +01:00
parent 9ba152c469
commit b584a95c9c
4 changed files with 27 additions and 5 deletions
@@ -24,6 +24,12 @@ class MarkerIterator extends AutoCloseableIterator<Marker> {
cursor = contentProviderUtils.getMarkerCursor(trackId, maxCount); cursor = contentProviderUtils.getMarkerCursor(trackId, maxCount);
} }
@NonNull
@Override
public Marker get() {
return contentProviderUtils.createMarker(cursor);
}
@Override @Override
public boolean hasNext() { public boolean hasNext() {
if (cursor == null) { if (cursor == null) {
@@ -38,7 +44,7 @@ class MarkerIterator extends AutoCloseableIterator<Marker> {
if (cursor == null || !cursor.moveToNext()) { if (cursor == null || !cursor.moveToNext()) {
throw new NoSuchElementException(); throw new NoSuchElementException();
} }
return contentProviderUtils.createMarker(cursor); return get();
} }
@Override @Override
@@ -33,13 +33,19 @@ class TrackPointIterator extends AutoCloseableIterator<TrackPoint> {
return !cursor.isLast() && !cursor.isAfterLast(); return !cursor.isLast() && !cursor.isAfterLast();
} }
@Override
@NonNull
public TrackPoint get() {
return ContentProviderUtils.fillTrackPoint(cursor, indexes);
}
@Override @Override
@NonNull @NonNull
public TrackPoint next() { public TrackPoint next() {
if (cursor == null || !cursor.moveToNext()) { if (cursor == null || !cursor.moveToNext()) {
throw new NoSuchElementException(); throw new NoSuchElementException();
} }
return ContentProviderUtils.fillTrackPoint(cursor, indexes); return get();
} }
@Override @Override
@@ -123,7 +123,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
@NonNull @NonNull
public Fragment createFragment(int position) { public Fragment createFragment(int position) {
markerAutoCloseableIterator.moveToPosition(position); markerAutoCloseableIterator.moveToPosition(position);
return MarkerDetailFragment.newInstance(markerAutoCloseableIterator.next().id()); return MarkerDetailFragment.newInstance(markerAutoCloseableIterator.get(position).id());
} }
@Override @Override
@@ -133,8 +133,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
@Nullable @Nullable
public CharSequence getPageTitle(int position) { public CharSequence getPageTitle(int position) {
markerAutoCloseableIterator.moveToPosition(position); return getString(R.string.marker_detail_title, position + 1, getItemCount(), markerAutoCloseableIterator.get().name());
return getString(R.string.marker_detail_title, position + 1, getItemCount(), markerAutoCloseableIterator.next().name());
} }
} }
} }
@@ -1,5 +1,7 @@
package de.dennisguse.opentracks.util; package de.dennisguse.opentracks.util;
import androidx.annotation.NonNull;
import java.util.Iterator; import java.util.Iterator;
public abstract class AutoCloseableIterator<T> implements Iterator<T>, AutoCloseable { public abstract class AutoCloseableIterator<T> implements Iterator<T>, AutoCloseable {
@@ -13,5 +15,14 @@ public abstract class AutoCloseableIterator<T> implements Iterator<T>, AutoClose
public abstract boolean moveToPosition(int position); public abstract boolean moveToPosition(int position);
@NonNull
public abstract T get();
@NonNull
public T get(int position) {
moveToPosition(position);
return get();
}
public abstract int getCount(); public abstract int getCount();
} }