diff --git a/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java b/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java index 401313127..70a667b28 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/fragments/ChartFragmentTest.java @@ -61,8 +61,7 @@ public class ChartFragmentTest { @Before public void setUp() { boolean chartByDistance = false; - chartFragment = new ChartFragment(chartByDistance) { - }; + chartFragment = (ChartFragment) ChartFragment.newInstance(chartByDistance); chartFragment.setChartView(new ChartView(ApplicationProvider.getApplicationContext(), chartByDistance)); chartFragment.setTripStatisticsUpdater(TrackStubUtils.INITIAL_TIME); } diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index 0c26841ca..73dda882d 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -34,7 +34,6 @@ import android.view.WindowManager; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentPagerAdapter; @@ -46,8 +45,7 @@ import de.dennisguse.opentracks.content.TrackDataHub; import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.Waypoint; import de.dennisguse.opentracks.content.provider.ContentProviderUtils; -import de.dennisguse.opentracks.fragments.ChartDistanceFragment; -import de.dennisguse.opentracks.fragments.ChartTimeFragment; +import de.dennisguse.opentracks.fragments.ChartFragment; import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment; import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment; import de.dennisguse.opentracks.fragments.StatsFragment; @@ -206,17 +204,15 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA @Override public Fragment getItem(int position) { switch (position) { - case 0: - return new StatsFragment(); case 1: - return new ChartTimeFragment(); + return ChartFragment.newInstance(false); case 2: - return new ChartDistanceFragment(); + return ChartFragment.newInstance(true); + default: //0 + return new StatsFragment(); } - return null; } - @Nullable @Override public CharSequence getPageTitle(int position) { switch (position) { diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartDistanceFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartDistanceFragment.java deleted file mode 100644 index 801110c6d..000000000 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChartDistanceFragment.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.dennisguse.opentracks.fragments; - -public class ChartDistanceFragment extends ChartFragment { - - public ChartDistanceFragment() { - super(true); - } -} diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java index 5100ecf30..bed4b8d88 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java @@ -25,7 +25,6 @@ import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; @@ -56,9 +55,18 @@ import de.dennisguse.opentracks.util.UnitConversions; * @author Sandor Dornbush * @author Rodrigo Damazio */ -public abstract class ChartFragment extends Fragment implements TrackDataListener { +public class ChartFragment extends Fragment implements TrackDataListener { - private static final String STATE_CHART_VIEW_BY_DISTANCE_KEY = "chartViewByDistance"; + private static final String KEY_CHART_VIEW_BY_DISTANCE_KEY = "chartViewByDistance"; + + public static Fragment newInstance(boolean chartByDistance) { + Bundle bundle = new Bundle(); + bundle.putBoolean(KEY_CHART_VIEW_BY_DISTANCE_KEY, chartByDistance); + + ChartFragment chartFragment = new ChartFragment(); + chartFragment.setArguments(bundle); + return chartFragment; + } private final List pendingPoints = new ArrayList<>(); @@ -139,14 +147,13 @@ public abstract class ChartFragment extends Fragment implements TrackDataListene } }; - public ChartFragment(boolean chartByDistance) { - this.chartByDistance = chartByDistance; - } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + chartByDistance = getArguments().getBoolean(KEY_CHART_VIEW_BY_DISTANCE_KEY, chartByDistance); + recordingDistanceInterval = PreferencesUtils.getRecordingDistanceIntervalDefault(getContext()); // Create a chartView here to store data thus won't need to reload all the data on every onStart or onResume. @@ -190,20 +197,6 @@ public abstract class ChartFragment extends Fragment implements TrackDataListene layout.removeView(chartView); } - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - outState.putBoolean(STATE_CHART_VIEW_BY_DISTANCE_KEY, chartByDistance); - } - - @Override - public void onViewStateRestored(@Nullable Bundle savedInstanceState) { - super.onViewStateRestored(savedInstanceState); - if (savedInstanceState != null) { - chartByDistance = savedInstanceState.getBoolean(STATE_CHART_VIEW_BY_DISTANCE_KEY); - } - } - @Override public void onTrackUpdated(Track track) { if (isResumed()) { diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartTimeFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartTimeFragment.java deleted file mode 100644 index 1139e3353..000000000 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChartTimeFragment.java +++ /dev/null @@ -1,8 +0,0 @@ -package de.dennisguse.opentracks.fragments; - -public class ChartTimeFragment extends ChartFragment { - - public ChartTimeFragment() { - super(false); - } -} diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java index 6f6b30526..1ba045983 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java @@ -36,12 +36,9 @@ import de.dennisguse.opentracks.util.DialogUtils; public class ConfirmDeleteDialogFragment extends DialogFragment { private static final String CONFIRM_DELETE_DIALOG_TAG = "confirmDeleteDialog"; - private ConfirmDeleteCaller caller; - private final long[] trackIds; + private static final String KEY_TRACK_IDS = "trackIds"; - public ConfirmDeleteDialogFragment(long[] trackIds) { - this.trackIds = trackIds; - } + private ConfirmDeleteCaller caller; /** * Create a new instance. @@ -49,7 +46,12 @@ public class ConfirmDeleteDialogFragment extends DialogFragment { * @param trackIds list of track ids to delete. To delete all, set to size 1 with trackIds[0] == -1L */ public static void showDialog(FragmentManager fragmentManager, long[] trackIds) { - new ConfirmDeleteDialogFragment(trackIds).show(fragmentManager, CONFIRM_DELETE_DIALOG_TAG); + Bundle bundle = new Bundle(); + bundle.putLongArray(KEY_TRACK_IDS, trackIds); + + ConfirmDeleteDialogFragment deleteTrackDialogFragment = new ConfirmDeleteDialogFragment(); + deleteTrackDialogFragment.setArguments(bundle); + deleteTrackDialogFragment.show(fragmentManager, CONFIRM_DELETE_DIALOG_TAG); } @Override @@ -65,6 +67,8 @@ public class ConfirmDeleteDialogFragment extends DialogFragment { @Override @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { + final long[] trackIds = getArguments().getLongArray(KEY_TRACK_IDS); + int titleId; int messageId; titleId = trackIds.length > 1 ? R.string.generic_delete_selected_confirm_title : R.string.track_delete_one_confirm_title; diff --git a/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java index ab86d3a9e..139e36497 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java @@ -38,16 +38,17 @@ import de.dennisguse.opentracks.util.DialogUtils; public class DeleteMarkerDialogFragment extends DialogFragment { private static final String DELETE_MARKER_DIALOG_TAG = "deleteMarkerDialog"; - private final long[] markerIds; + private static final String KEY_MARKER_IDS = "markerIds"; private DeleteMarkerCaller caller; - public DeleteMarkerDialogFragment(long[] markerIds) { - this.markerIds = markerIds; - } - public static void showDialog(FragmentManager fragmentManager, long[] markerIds) { - new DeleteMarkerDialogFragment(markerIds).show(fragmentManager, DELETE_MARKER_DIALOG_TAG); + Bundle bundle = new Bundle(); + bundle.putLongArray(KEY_MARKER_IDS, markerIds); + + DeleteMarkerDialogFragment deleteMarkerDialogFragment = new DeleteMarkerDialogFragment(); + deleteMarkerDialogFragment.setArguments(bundle); + deleteMarkerDialogFragment.show(fragmentManager, DELETE_MARKER_DIALOG_TAG); } @Override @@ -63,6 +64,8 @@ public class DeleteMarkerDialogFragment extends DialogFragment { @Override @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { + final long[] markerIds = getArguments().getLongArray(KEY_MARKER_IDS); + final FragmentActivity fragmentActivity = getActivity(); int titleId; int messageId; diff --git a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java index 59e9649c1..8fac538ac 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java @@ -40,18 +40,19 @@ import de.dennisguse.opentracks.io.file.TrackFileFormat; public class FileTypeDialogFragment extends DialogFragment { private static final String FILE_TYPE_DIALOG_TAG = "fileType"; - private final int titleId; + private static final String KEY_TITLE_ID = "titleId"; + private static final String KEY_OPTION_ID = "optionId"; private FileTypeCaller caller; - private final int optionId; - - public FileTypeDialogFragment(int titleId, int optionId) { - this.titleId = titleId; - this.optionId = optionId; - } public static void showDialog(FragmentManager fragmentManager, int titleId, int optionId) { - new FileTypeDialogFragment(titleId, optionId).show(fragmentManager, FILE_TYPE_DIALOG_TAG); + Bundle bundle = new Bundle(); + bundle.putInt(KEY_TITLE_ID, titleId); + bundle.putInt(KEY_OPTION_ID, optionId); + + FileTypeDialogFragment fileTypeDialogFragment = new FileTypeDialogFragment(); + fileTypeDialogFragment.setArguments(bundle); + fileTypeDialogFragment.show(fragmentManager, FILE_TYPE_DIALOG_TAG); } @Override @@ -67,6 +68,9 @@ public class FileTypeDialogFragment extends DialogFragment { @Override @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { + int optionId = getArguments().getInt(KEY_OPTION_ID); + final int titleId = getArguments().getInt(KEY_TITLE_ID); + final TrackFileFormat[] trackFileFormats = {TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES, TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA, TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA, TrackFileFormat.GPX}; String[] choices = new String[trackFileFormats.length]; for (int i = 0; i < choices.length; i++) { diff --git a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java index cf9d3955a..0d41038c1 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java @@ -57,7 +57,9 @@ public class MarkerDetailFragment extends Fragment { private static final String TAG = MarkerDetailFragment.class.getSimpleName(); private static final String KEY_MARKER_ID = "markerId"; + private static final long HIDE_TEXT_DELAY = 4 * UnitConversions.ONE_SECOND_MS; + private ContentProviderUtils contentProviderUtils; private Handler handler; private ImageView photoView;