From 8b11e1d611f502e0f1823b17cb3db12dac67e22b Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Mon, 16 Sep 2019 23:39:33 +0200 Subject: [PATCH] DialogFragments: do not save state. --- .../opentracks/AbstractListActivity.java | 3 +- .../opentracks/MarkerListActivity.java | 3 +- .../opentracks/SearchListActivity.java | 2 +- .../opentracks/TrackDetailActivity.java | 6 ++-- .../ConfirmDeleteDialogFragment.java | 20 ++++++------- .../fragments/DeleteMarkerDialogFragment.java | 21 +++++++------- .../fragments/FileTypeDialogFragment.java | 25 ++++++++--------- .../fragments/FrequencyDialogFragment.java | 28 ++++++++----------- .../fragments/MarkerDetailFragment.java | 3 +- .../io/file/exporter/ExportActivity.java | 4 +-- .../io/file/importer/ImportActivity.java | 4 +-- 11 files changed, 51 insertions(+), 68 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java index aa0de025e..91d3519ae 100644 --- a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java @@ -182,8 +182,7 @@ public abstract class AbstractListActivity extends AbstractActivity implements C * @param trackIds the track ids */ protected void deleteTracks(long[] trackIds) { - ConfirmDeleteDialogFragment.newInstance(trackIds) - .show(getSupportFragmentManager(), ConfirmDeleteDialogFragment.CONFIRM_DELETE_DIALOG_TAG); + ConfirmDeleteDialogFragment.showDialog(getSupportFragmentManager(), trackIds); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java index d20790663..649988a1d 100644 --- a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java @@ -300,8 +300,7 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker if (markerIds.length > 1 && markerIds.length == listView.getCount()) { markerIds = new long[]{-1L}; } - DeleteMarkerDialogFragment.newInstance(markerIds) - .show(getSupportFragmentManager(), DeleteMarkerDialogFragment.DELETE_MARKER_DIALOG_TAG); + DeleteMarkerDialogFragment.showDialog(getSupportFragmentManager(), markerIds); return true; case R.id.list_context_menu_select_all: int size = listView.getCount(); diff --git a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java index 04b5cfa67..073a8a454 100644 --- a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java @@ -323,7 +323,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa return true; case R.id.list_context_menu_delete: if (markerId != null) { - DeleteMarkerDialogFragment.newInstance(new long[]{markerId}).show(getSupportFragmentManager(), DeleteMarkerDialogFragment.DELETE_MARKER_DIALOG_TAG); + DeleteMarkerDialogFragment.showDialog(getSupportFragmentManager(), new long[]{markerId}); } else { deleteTracks(new long[]{trackId}); } diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index 1f08a21fb..af2bc5822 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -361,12 +361,10 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA startActivity(intent); return true; case R.id.track_detail_voice_frequency: - FrequencyDialogFragment.newInstance(R.string.voice_frequency_key, PreferencesUtils.VOICE_FREQUENCY_DEFAULT, R.string.menu_voice_frequency) - .show(getSupportFragmentManager(), FrequencyDialogFragment.FREQUENCY_DIALOG_TAG); + FrequencyDialogFragment.showDialog(getSupportFragmentManager(), R.string.voice_frequency_key, PreferencesUtils.VOICE_FREQUENCY_DEFAULT, R.string.menu_voice_frequency); return true; case R.id.track_detail_split_frequency: - FrequencyDialogFragment.newInstance(R.string.split_frequency_key, PreferencesUtils.SPLIT_FREQUENCY_DEFAULT, R.string.menu_split_frequency) - .show(getSupportFragmentManager(), FrequencyDialogFragment.FREQUENCY_DIALOG_TAG); + FrequencyDialogFragment.showDialog(getSupportFragmentManager(), R.string.split_frequency_key, PreferencesUtils.SPLIT_FREQUENCY_DEFAULT, R.string.menu_split_frequency); return true; case R.id.track_detail_edit: intent = IntentUtils.newIntent(this, TrackEditActivity.class) diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java index f45872750..3a1a10a53 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java @@ -23,6 +23,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.util.DialogUtils; @@ -34,22 +35,21 @@ import de.dennisguse.opentracks.util.DialogUtils; */ public class ConfirmDeleteDialogFragment extends DialogFragment { - public static final String CONFIRM_DELETE_DIALOG_TAG = "confirmDeleteDialog"; - private static final String KEY_TRACK_IDS = "trackIds"; + private static final String CONFIRM_DELETE_DIALOG_TAG = "confirmDeleteDialog"; private ConfirmDeleteCaller caller; + private long[] trackIds; + + public ConfirmDeleteDialogFragment(long[] trackIds) { + this.trackIds = trackIds; + } /** * Create a new instance. * * @param trackIds list of track ids to delete. To delete all, set to size 1 with trackIds[0] == -1L */ - public static ConfirmDeleteDialogFragment newInstance(long[] trackIds) { - Bundle bundle = new Bundle(); - bundle.putLongArray(KEY_TRACK_IDS, trackIds); - - ConfirmDeleteDialogFragment deleteTrackDialogFragment = new ConfirmDeleteDialogFragment(); - deleteTrackDialogFragment.setArguments(bundle); - return deleteTrackDialogFragment; + public static void showDialog(FragmentManager fragmentManager, long[] trackIds) { + new ConfirmDeleteDialogFragment(trackIds).show(fragmentManager, CONFIRM_DELETE_DIALOG_TAG); } @Override @@ -62,11 +62,9 @@ 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 7476f0715..d8601f5a7 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java @@ -24,6 +24,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.content.ContentProviderUtils; @@ -37,17 +38,17 @@ import de.dennisguse.opentracks.util.DialogUtils; */ public class DeleteMarkerDialogFragment extends DialogFragment { - public static final String DELETE_MARKER_DIALOG_TAG = "deleteMarkerDialog"; - private static final String KEY_MARKER_IDS = "markerIds"; + private static final String DELETE_MARKER_DIALOG_TAG = "deleteMarkerDialog"; + private long[] markerIds; + private DeleteMarkerCaller caller; - public static DeleteMarkerDialogFragment newInstance(long[] markerIds) { - Bundle bundle = new Bundle(); - bundle.putLongArray(KEY_MARKER_IDS, markerIds); + public DeleteMarkerDialogFragment(long[] markerIds) { + this.markerIds = markerIds; + } - DeleteMarkerDialogFragment deleteMarkerDialogFragment = new DeleteMarkerDialogFragment(); - deleteMarkerDialogFragment.setArguments(bundle); - return deleteMarkerDialogFragment; + public static void showDialog(FragmentManager fragmentManager, long[] markerIds) { + new DeleteMarkerDialogFragment(markerIds).show(fragmentManager, DELETE_MARKER_DIALOG_TAG); } @Override @@ -64,7 +65,6 @@ public class DeleteMarkerDialogFragment extends DialogFragment { @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { final FragmentActivity fragmentActivity = getActivity(); - final long[] markerIds = getArguments().getLongArray(KEY_MARKER_IDS); int titleId; int messageId; if (markerIds.length == 1 && markerIds[0] == -1L) { @@ -81,8 +81,7 @@ public class DeleteMarkerDialogFragment extends DialogFragment { new Thread(new Runnable() { @Override public void run() { - ContentProviderUtils contentProviderUtils = ContentProviderUtils.Factory.get( - fragmentActivity); + ContentProviderUtils contentProviderUtils = ContentProviderUtils.Factory.get(fragmentActivity); for (long markerId : markerIds) { contentProviderUtils.deleteWaypoint(fragmentActivity, markerId, new DescriptionGeneratorImpl(fragmentActivity)); diff --git a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java index ca305ffcc..d95781ece 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java @@ -25,6 +25,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; import java.util.Locale; @@ -39,19 +40,19 @@ import de.dennisguse.opentracks.util.FileUtils; */ public class FileTypeDialogFragment extends DialogFragment { - public static final String FILE_TYPE_DIALOG_TAG = "fileType"; - private static final String KEY_TITLE_ID = "titleId"; - private static final String KEY_OPTION_ID = "optionId"; + private static final String FILE_TYPE_DIALOG_TAG = "fileType"; + private int titleId; + private FileTypeCaller caller; + private int optionId; - public static FileTypeDialogFragment newInstance(int titleId, int optionId) { - Bundle bundle = new Bundle(); - bundle.putInt(KEY_TITLE_ID, titleId); - bundle.putInt(KEY_OPTION_ID, optionId); + public FileTypeDialogFragment(int titleId, int optionId) { + this.titleId = titleId; + this.optionId = optionId; + } - FileTypeDialogFragment fileTypeDialogFragment = new FileTypeDialogFragment(); - fileTypeDialogFragment.setArguments(bundle); - return fileTypeDialogFragment; + public static void showDialog(FragmentManager fragmentManager, int titleId, int optionId) { + new FileTypeDialogFragment(titleId, optionId).show(fragmentManager, FILE_TYPE_DIALOG_TAG); } @Override @@ -67,8 +68,6 @@ 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.KML_WITH_TRACKDETAIL_AND_SENSORDATA, TrackFileFormat.GPX}; String[] choices = new String[trackFileFormats.length]; for (int i = 0; i < choices.length; i++) { @@ -96,7 +95,7 @@ public class FileTypeDialogFragment extends DialogFragment { } @Override - public void onCancel(DialogInterface dialog) { + public void onCancel(@NonNull DialogInterface dialog) { onDismissed(); } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/FrequencyDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/FrequencyDialogFragment.java index ead74d248..6532e84c0 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/FrequencyDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/FrequencyDialogFragment.java @@ -24,6 +24,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.util.PreferencesUtils; @@ -36,21 +37,19 @@ import de.dennisguse.opentracks.util.StringUtils; */ public class FrequencyDialogFragment extends DialogFragment { - public static final String FREQUENCY_DIALOG_TAG = "frequencyDialog"; + private static final String FREQUENCY_DIALOG_TAG = "frequencyDialog"; + private int preferenceId; + private int defaultValue; + private int titleId; - private static final String KEY_PREFERENCE_ID = "preferenceId"; - private static final String KEY_DEFAULT_VALUE = "defaultValue"; - private static final String KEY_TITLE_ID = "titleId"; + public FrequencyDialogFragment(int preferenceId, int defaultValue, int titleId) { + this.preferenceId = preferenceId; + this.defaultValue = defaultValue; + this.titleId = titleId; + } - public static FrequencyDialogFragment newInstance(int preferenceId, int defaultValue, int titleId) { - Bundle bundle = new Bundle(); - bundle.putInt(KEY_PREFERENCE_ID, preferenceId); - bundle.putInt(KEY_DEFAULT_VALUE, defaultValue); - bundle.putInt(KEY_TITLE_ID, titleId); - - FrequencyDialogFragment frequencyDialogFragment = new FrequencyDialogFragment(); - frequencyDialogFragment.setArguments(bundle); - return frequencyDialogFragment; + public static void showDialog(FragmentManager fragmentManager, int preferenceId, int defaultValue, int titleId) { + new FrequencyDialogFragment(preferenceId, defaultValue, titleId).show(fragmentManager, FREQUENCY_DIALOG_TAG); } @Override @@ -58,9 +57,6 @@ public class FrequencyDialogFragment extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { FragmentActivity fragmentActivity = getActivity(); - final int preferenceId = getArguments().getInt(KEY_PREFERENCE_ID); - int defaultValue = getArguments().getInt(KEY_DEFAULT_VALUE); - int titleId = getArguments().getInt(KEY_TITLE_ID); int frequencyValue = PreferencesUtils.getInt(fragmentActivity, preferenceId, defaultValue); return new AlertDialog.Builder(fragmentActivity).setPositiveButton( diff --git a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java index ab18a77fd..7fcd90261 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java @@ -192,8 +192,7 @@ public class MarkerDetailFragment extends Fragment { startActivity(intent); return true; case R.id.marker_detail_delete: - DeleteMarkerDialogFragment.newInstance(new long[]{markerId}) - .show(getChildFragmentManager(), DeleteMarkerDialogFragment.DELETE_MARKER_DIALOG_TAG); + DeleteMarkerDialogFragment.showDialog(getChildFragmentManager(), new long[]{markerId}); return true; default: return super.onOptionsItemSelected(item); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java index dbcc60328..ff2c4b302 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java @@ -84,9 +84,7 @@ public class ExportActivity extends FragmentActivity implements FileTypeDialogFr } private void fileTypeDialogStart() { - FileTypeDialogFragment - .newInstance(R.string.export_all_title, R.string.export_all_option) - .show(getSupportFragmentManager(), FileTypeDialogFragment.FILE_TYPE_DIALOG_TAG); + FileTypeDialogFragment.showDialog(getSupportFragmentManager(), R.string.export_all_title, R.string.export_all_option); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java index 4835b0c98..fc2352102 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java @@ -85,9 +85,7 @@ public class ImportActivity extends FragmentActivity implements FileTypeDialogFr } private void fileTypeDialogStart() { - FileTypeDialogFragment - .newInstance(R.string.import_selection_title, R.string.import_selection_option) - .show(getSupportFragmentManager(), FileTypeDialogFragment.FILE_TYPE_DIALOG_TAG); + FileTypeDialogFragment.showDialog(getSupportFragmentManager(), R.string.import_selection_title, R.string.import_selection_option); } @Override