diff --git a/src/com/android/settings/sim/PreferredSimDialogFragment.java b/src/com/android/settings/sim/PreferredSimDialogFragment.java
index c4a9484..7786dd1 100644
--- a/src/com/android/settings/sim/PreferredSimDialogFragment.java
+++ b/src/com/android/settings/sim/PreferredSimDialogFragment.java
@@ -23,6 +23,7 @@
 import android.os.Bundle;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -81,7 +82,12 @@
     }
 
     private void updateDialog(AlertDialog dialog) {
+        Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed);
+
         final SubscriptionInfo info = getPreferredSubscription();
+        if (mWasDismissed) {
+            return;
+        }
         if (info == null) {
             dismiss();
             return;
diff --git a/src/com/android/settings/sim/SimDialogFragment.java b/src/com/android/settings/sim/SimDialogFragment.java
index 362fccc..889f062 100644
--- a/src/com/android/settings/sim/SimDialogFragment.java
+++ b/src/com/android/settings/sim/SimDialogFragment.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 
@@ -34,6 +35,7 @@
     private static final String KEY_DIALOG_TYPE = "dialog_type";
 
     private SubscriptionsChangeListener mChangeListener;
+    protected boolean mWasDismissed = false;
 
     protected static Bundle initArguments(int dialogType, int titleResId) {
         final Bundle args = new Bundle();
@@ -53,6 +55,8 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
+        Log.d(TAG, "Dialog Attached.");
+        mWasDismissed = false;
         mChangeListener = new SubscriptionsChangeListener(context, this);
     }
 
@@ -70,6 +74,8 @@
 
     @Override
     public void onDismiss(@NonNull DialogInterface dialog) {
+        Log.d(TAG, "Dialog Dismissed.");
+        mWasDismissed = true;
         super.onDismiss(dialog);
         final SimDialogActivity activity = (SimDialogActivity) getActivity();
         if (activity != null && !activity.isFinishing()) {
diff --git a/src/com/android/settings/sim/SimListDialogFragment.java b/src/com/android/settings/sim/SimListDialogFragment.java
index 2e3cfc7..2681d7b 100644
--- a/src/com/android/settings/sim/SimListDialogFragment.java
+++ b/src/com/android/settings/sim/SimListDialogFragment.java
@@ -24,6 +24,7 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -49,6 +50,7 @@
  */
 public class SimListDialogFragment extends SimDialogFragment implements
         DialogInterface.OnClickListener {
+    private static final String TAG = "SimListDialogFragment";
     protected static final String KEY_INCLUDE_ASK_EVERY_TIME = "include_ask_every_time";
 
     protected SelectSubscriptionAdapter mAdapter;
@@ -101,9 +103,13 @@
 
     @Override
     public void updateDialog() {
+        Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed);
+
         List<SubscriptionInfo> currentSubscriptions = getCurrentSubscriptions();
         if (currentSubscriptions == null) {
-            dismiss();
+            if (!mWasDismissed) {
+                dismiss();
+            }
             return;
         }
         if (getArguments().getBoolean(KEY_INCLUDE_ASK_EVERY_TIME)) {
