diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java index 2e87286462a2..47e079c1f67e 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java @@ -41,6 +41,7 @@ import com.nextcloud.receiver.NetworkChangeListener; import com.nextcloud.receiver.NetworkChangeReceiver; import com.nextcloud.utils.EditorUtils; +import com.nextcloud.utils.extensions.ActivityExtensionsKt; import com.nextcloud.utils.extensions.BundleExtensionsKt; import com.nextcloud.utils.extensions.FileExtensionsKt; import com.nextcloud.utils.extensions.IntentExtensionsKt; @@ -562,13 +563,23 @@ protected void updateFileFromDB(){ */ public void showLoadingDialog(String message) { runOnUiThread(() -> { + if (!ActivityExtensionsKt.isActive(this)) { + Log_OC.w(TAG, "cannot show loading dialog, activity is finishing"); + return; + } + FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.executePendingTransactions(); Fragment existingDialog = fragmentManager.findFragmentByTag(DIALOG_WAIT_TAG); if (existingDialog instanceof LoadingDialog loadingDialog) { Log_OC.d(TAG, "dismiss previous loading dialog"); - loadingDialog.dismiss(); + + if (!fragmentManager.isStateSaved()) { + loadingDialog.dismiss(); + } else { + loadingDialog.dismissAllowingStateLoss(); + } } // Show new dialog @@ -585,6 +596,11 @@ public void showLoadingDialog(String message) { */ public void dismissLoadingDialog() { runOnUiThread(() -> { + if (!ActivityExtensionsKt.isActive(this)) { + Log_OC.w(TAG, "cannot dismiss loading dialog, activity is finishing"); + return; + } + FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.executePendingTransactions(); Fragment fragment = fragmentManager.findFragmentByTag(DIALOG_WAIT_TAG);