From 70bf76a43637f2a9666e596d932233040d3a58df Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Thu, 24 Feb 2022 12:55:53 +0800 Subject: [PATCH] Fix the settings crash when SimDialogActivity is null The PreferredSimDialogFragment did updateDialog after SimDialogActivity was finished. It caused the settings crash. This is similar to b/184899699 Bug: 220803944 Test: build pass Change-Id: I9a5964400a63053e362632944b9e7aa8ec1bbea8 --- .../android/settings/sim/PreferredSimDialogFragment.java | 3 ++- src/com/android/settings/sim/SimDialogFragment.java | 6 ++++++ src/com/android/settings/sim/SimListDialogFragment.java | 7 ++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/sim/PreferredSimDialogFragment.java b/src/com/android/settings/sim/PreferredSimDialogFragment.java index 7786dd1297b..6b5e2b50f73 100644 --- a/src/com/android/settings/sim/PreferredSimDialogFragment.java +++ b/src/com/android/settings/sim/PreferredSimDialogFragment.java @@ -84,10 +84,11 @@ public class PreferredSimDialogFragment extends SimDialogFragment implements private void updateDialog(AlertDialog dialog) { Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed); - final SubscriptionInfo info = getPreferredSubscription(); if (mWasDismissed) { return; } + + final SubscriptionInfo info = getPreferredSubscription(); if (info == null) { dismiss(); return; diff --git a/src/com/android/settings/sim/SimDialogFragment.java b/src/com/android/settings/sim/SimDialogFragment.java index 889f0621d81..2e4fa49367f 100644 --- a/src/com/android/settings/sim/SimDialogFragment.java +++ b/src/com/android/settings/sim/SimDialogFragment.java @@ -83,6 +83,12 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment imple } } + @Override + public void dismiss() { + mChangeListener.stop(); + super.dismiss(); + } + public abstract void updateDialog(); @Override diff --git a/src/com/android/settings/sim/SimListDialogFragment.java b/src/com/android/settings/sim/SimListDialogFragment.java index b8fef8a63e6..166d00a10fe 100644 --- a/src/com/android/settings/sim/SimListDialogFragment.java +++ b/src/com/android/settings/sim/SimListDialogFragment.java @@ -128,12 +128,13 @@ public class SimListDialogFragment extends SimDialogFragment { @Override public void updateDialog() { Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed); + if (mWasDismissed) { + return; + } List currentSubscriptions = getCurrentSubscriptions(); if (currentSubscriptions == null) { - if (!mWasDismissed) { - dismiss(); - } + dismiss(); return; } boolean includeAskEveryTime = getArguments().getBoolean(KEY_INCLUDE_ASK_EVERY_TIME);