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);
}
@NonNull
@Override
public Marker get() {
return contentProviderUtils.createMarker(cursor);
}
@Override
public boolean hasNext() {
if (cursor == null) {
@@ -38,7 +44,7 @@ class MarkerIterator extends AutoCloseableIterator<Marker> {
if (cursor == null || !cursor.moveToNext()) {
throw new NoSuchElementException();
}
return contentProviderUtils.createMarker(cursor);
return get();
}
@Override
@@ -33,13 +33,19 @@ class TrackPointIterator extends AutoCloseableIterator<TrackPoint> {
return !cursor.isLast() && !cursor.isAfterLast();
}
@Override
@NonNull
public TrackPoint get() {
return ContentProviderUtils.fillTrackPoint(cursor, indexes);
}
@Override
@NonNull
public TrackPoint next() {
if (cursor == null || !cursor.moveToNext()) {
throw new NoSuchElementException();
}
return ContentProviderUtils.fillTrackPoint(cursor, indexes);
return get();
}
@Override
@@ -123,7 +123,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
@NonNull
public Fragment createFragment(int position) {
markerAutoCloseableIterator.moveToPosition(position);
return MarkerDetailFragment.newInstance(markerAutoCloseableIterator.next().id());
return MarkerDetailFragment.newInstance(markerAutoCloseableIterator.get(position).id());
}
@Override
@@ -133,8 +133,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
@Nullable
public CharSequence getPageTitle(int position) {
markerAutoCloseableIterator.moveToPosition(position);
return getString(R.string.marker_detail_title, position + 1, getItemCount(), markerAutoCloseableIterator.next().name());
return getString(R.string.marker_detail_title, position + 1, getItemCount(), markerAutoCloseableIterator.get().name());
}
}
}
@@ -1,5 +1,7 @@
package de.dennisguse.opentracks.util;
import androidx.annotation.NonNull;
import java.util.Iterator;
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);
@NonNull
public abstract T get();
@NonNull
public T get(int position) {
moveToPosition(position);
return get();
}
public abstract int getCount();
}