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
(cherry picked from commit 70bf76a436)
Merged-In: I9a5964400a63053e362632944b9e7aa8ec1bbea8
This commit is contained in:
SongFerngWang
2022-02-24 12:55:53 +08:00
parent 7ab547f1b8
commit d786b64ff6
3 changed files with 12 additions and 4 deletions

View File

@@ -84,10 +84,11 @@ public class PreferredSimDialogFragment extends SimDialogFragment implements
private void updateDialog(AlertDialog dialog) { private void updateDialog(AlertDialog dialog) {
Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed); Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed);
final SubscriptionInfo info = getPreferredSubscription();
if (mWasDismissed) { if (mWasDismissed) {
return; return;
} }
final SubscriptionInfo info = getPreferredSubscription();
if (info == null) { if (info == null) {
dismiss(); dismiss();
return; return;

View File

@@ -83,6 +83,12 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment imple
} }
} }
@Override
public void dismiss() {
mChangeListener.stop();
super.dismiss();
}
public abstract void updateDialog(); public abstract void updateDialog();
@Override @Override

View File

@@ -128,12 +128,13 @@ public class SimListDialogFragment extends SimDialogFragment {
@Override @Override
public void updateDialog() { public void updateDialog() {
Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed); Log.d(TAG, "Dialog updated, dismiss status: " + mWasDismissed);
if (mWasDismissed) {
return;
}
List<SubscriptionInfo> currentSubscriptions = getCurrentSubscriptions(); List<SubscriptionInfo> currentSubscriptions = getCurrentSubscriptions();
if (currentSubscriptions == null) { if (currentSubscriptions == null) {
if (!mWasDismissed) { dismiss();
dismiss();
}
return; return;
} }
boolean includeAskEveryTime = getArguments().getBoolean(KEY_INCLUDE_ASK_EVERY_TIME); boolean includeAskEveryTime = getArguments().getBoolean(KEY_INCLUDE_ASK_EVERY_TIME);