diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index c73739526..788f8f869 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -83,7 +83,9 @@ limitations under the License. android:name=".AggregatedStatsActivity" android:label="@string/menu_aggregated_statistics" /> - + @@ -128,7 +130,9 @@ limitations under the License. android:name="android.app.default_searchable" android:value=".SearchListActivity" /> - + diff --git a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java index 0c72dc142..8620847c6 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java @@ -70,14 +70,35 @@ public class FileTypeDialogFragment extends AbstractDialogFragment { choices[i] = getString(optionId, trackFileFormat.name(), FileUtils.getPathDisplayName(trackFileFormat.getExtension())); } - return new AlertDialog.Builder(getActivity()).setNegativeButton(R.string.generic_cancel, null) + return new AlertDialog.Builder(getActivity()) + .setCancelable(true) + .setNegativeButton(R.string.generic_cancel, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + onDismissed(); + } + }) .setPositiveButton(R.string.generic_ok, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int position = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); caller.onFileTypeDone(TrackFileFormat.values()[position]); } - }).setSingleChoiceItems(choices, 0, null).setTitle(titleId).create(); + }) + .setSingleChoiceItems(choices, 0, null) + .setTitle(titleId) + .setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialog) { + onDismissed(); + } + }) + .create(); + } + + protected void onDismissed() { + dismiss(); + caller.onDismissed(); } /** @@ -91,5 +112,7 @@ public class FileTypeDialogFragment extends AbstractDialogFragment { * Called when file type selection is done. */ void onFileTypeDone(TrackFileFormat trackFileFormat); + + void onDismissed(); } } \ No newline at end of file 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 ad3fa0f49..de398a1aa 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 @@ -92,6 +92,11 @@ public class ExportActivity extends FragmentActivity implements FileTypeDialogFr // } } + @Override + public void onDismissed() { + finish(); + } + @Override protected Dialog onCreateDialog(int id) { switch (id) { @@ -103,6 +108,7 @@ public class ExportActivity extends FragmentActivity implements FileTypeDialogFr public void onCancel(DialogInterface dialog) { saveAsyncTask.cancel(true); dialog.dismiss(); + onDismissed(); } }, directoryDisplayName); return progressDialog; @@ -129,13 +135,13 @@ public class ExportActivity extends FragmentActivity implements FileTypeDialogFr @Override public void onCancel(DialogInterface dialog) { dialog.dismiss(); - finish(); + onDismissed(); } }).setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int arg1) { dialog.dismiss(); - finish(); + onDismissed(); } }).setTitle(titleId); final Dialog dialog = builder.create(); 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 bbe3f58cf..b381f77d1 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 @@ -102,6 +102,11 @@ public class ImportActivity extends FragmentActivity implements FileTypeDialogFr // } } + @Override + public void onDismissed() { + finish(); + } + @Override protected Dialog onCreateDialog(int id) { switch (id) { @@ -112,6 +117,7 @@ public class ImportActivity extends FragmentActivity implements FileTypeDialogFr public void onCancel(DialogInterface dialog) { importAsyncTask.cancel(true); dialog.dismiss(); + onDismissed(); } }, directoryDisplayName); return progressDialog; @@ -142,13 +148,13 @@ public class ImportActivity extends FragmentActivity implements FileTypeDialogFr @Override public void onCancel(DialogInterface dialogInterface) { dialogInterface.dismiss(); - finish(); + onDismissed(); } }).setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int which) { dialogInterface.dismiss(); - finish(); + onDismissed(); } }).setTitle(titleId).create(); dialog.setOnShowListener(new DialogInterface.OnShowListener() { diff --git a/src/main/res/values/themes_custom.xml b/src/main/res/values/themes_custom.xml index 166d83007..aafb9fbdf 100644 --- a/src/main/res/values/themes_custom.xml +++ b/src/main/res/values/themes_custom.xml @@ -32,6 +32,16 @@ limitations under the License. @style/CustomAlertDialogTheme + +