Fix preferred apn not selected when back from edit

When back from edit page, preferred apn and apn list will both refresh,
if apn list refresh happens later, it will clear the preferred apn.

Saved the latest preferred apn into mPreferredApnKey to fix.

Bug: 257316932
Test: manual
Change-Id: I62f9cbd5847b7edb834c815cdecc089e0764a8c7
This commit is contained in:
Chaohui Wang
2024-06-11 14:00:04 +08:00
parent 5a81e24367
commit 86f4ed16f3

View File

@@ -99,6 +99,8 @@ public class ApnSettings extends RestrictedSettingsFragment
private UserManager mUserManager;
private int mSubId;
private PreferredApnRepository mPreferredApnRepository;
@Nullable
private String mPreferredApnKey;
private String mMvnoType;
private String mMvnoMatchData;
@@ -175,6 +177,7 @@ public class ApnSettings extends RestrictedSettingsFragment
});
mPreferredApnRepository.collectPreferredApn(viewLifecycleOwner, (preferredApn) -> {
mPreferredApnKey = preferredApn;
final PreferenceGroup apnPreferenceList = findPreference(APN_LIST);
for (int i = 0; i < apnPreferenceList.getPreferenceCount(); i++) {
ApnPreference apnPreference = (ApnPreference) apnPreferenceList.getPreference(i);
@@ -259,6 +262,7 @@ public class ApnSettings extends RestrictedSettingsFragment
((type == null) || type.contains(ApnSetting.TYPE_DEFAULT_STRING));
pref.setDefaultSelectable(defaultSelectable);
if (defaultSelectable) {
pref.setIsChecked(key.equals(mPreferredApnKey));
apnList.add(pref);
} else {
mmsApnList.add(pref);