Skip to content

Commit f5cc0f2

Browse files
Merge pull request #16379 from nextcloud/fix/loading-dialog-illegalstateexception
fix(file-activity): loading dialog illegal-state-exception
2 parents c3d0056 + 69af3e4 commit f5cc0f2

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.nextcloud.receiver.NetworkChangeListener;
4242
import com.nextcloud.receiver.NetworkChangeReceiver;
4343
import com.nextcloud.utils.EditorUtils;
44+
import com.nextcloud.utils.extensions.ActivityExtensionsKt;
4445
import com.nextcloud.utils.extensions.BundleExtensionsKt;
4546
import com.nextcloud.utils.extensions.FileExtensionsKt;
4647
import com.nextcloud.utils.extensions.IntentExtensionsKt;
@@ -562,13 +563,23 @@ protected void updateFileFromDB(){
562563
*/
563564
public void showLoadingDialog(String message) {
564565
runOnUiThread(() -> {
566+
if (!ActivityExtensionsKt.isActive(this)) {
567+
Log_OC.w(TAG, "cannot show loading dialog, activity is finishing");
568+
return;
569+
}
570+
565571
FragmentManager fragmentManager = getSupportFragmentManager();
566572
fragmentManager.executePendingTransactions();
567573
Fragment existingDialog = fragmentManager.findFragmentByTag(DIALOG_WAIT_TAG);
568574

569575
if (existingDialog instanceof LoadingDialog loadingDialog) {
570576
Log_OC.d(TAG, "dismiss previous loading dialog");
571-
loadingDialog.dismiss();
577+
578+
if (!fragmentManager.isStateSaved()) {
579+
loadingDialog.dismiss();
580+
} else {
581+
loadingDialog.dismissAllowingStateLoss();
582+
}
572583
}
573584

574585
// Show new dialog
@@ -585,6 +596,11 @@ public void showLoadingDialog(String message) {
585596
*/
586597
public void dismissLoadingDialog() {
587598
runOnUiThread(() -> {
599+
if (!ActivityExtensionsKt.isActive(this)) {
600+
Log_OC.w(TAG, "cannot dismiss loading dialog, activity is finishing");
601+
return;
602+
}
603+
588604
FragmentManager fragmentManager = getSupportFragmentManager();
589605
fragmentManager.executePendingTransactions();
590606
Fragment fragment = fragmentManager.findFragmentByTag(DIALOG_WAIT_TAG);

0 commit comments

Comments
 (0)