diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 5343709208e..d5a192a5456 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -61,19 +61,6 @@ public class EnabledNetworkModePreferenceController extends public EnabledNetworkModePreferenceController(Context context, String key) { super(context, key); - mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( - new Handler(Looper.getMainLooper())); - mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( - () -> updatePreference()); - } - - private void updatePreference() { - if (mPreferenceScreen != null) { - displayPreference(mPreferenceScreen); - } - if (mPreference != null) { - updateState(mPreference); - } } @Override @@ -100,11 +87,17 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_START) public void onStart() { + if (mPreferredNetworkModeObserver == null) { + return; + } mPreferredNetworkModeObserver.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { + if (mPreferredNetworkModeObserver == null) { + return; + } mPreferredNetworkModeObserver.unregister(mContext); } @@ -151,9 +144,25 @@ public class EnabledNetworkModePreferenceController extends mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mBuilder = new PreferenceEntriesBuilder(mContext, mSubId); + if (mPreferredNetworkModeObserver == null) { + mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( + new Handler(Looper.getMainLooper())); + mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( + () -> updatePreference()); + } + lifecycle.addObserver(this); } + private void updatePreference() { + if (mPreferenceScreen != null) { + displayPreference(mPreferenceScreen); + } + if (mPreference != null) { + updateState(mPreference); + } + } + private final static class PreferenceEntriesBuilder { private CarrierConfigManager mCarrierConfigManager; private Context mContext; diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java index 3a91616a3c6..91d01d36a1d 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java @@ -69,10 +69,13 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc public Enhanced4gBasePreferenceController(Context context, String key) { super(context, key); m4gLteListeners = new ArrayList<>(); - mPhoneStateListener = new PhoneCallStateListener(); } public Enhanced4gBasePreferenceController init(int subId) { + if (mPhoneStateListener == null) { + mPhoneStateListener = new PhoneCallStateListener(); + } + if (mSubId == subId) { return this; } @@ -122,11 +125,17 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc @Override public void onStart() { + if (mPhoneStateListener == null) { + return; + } mPhoneStateListener.register(mContext, mSubId); } @Override public void onStop() { + if (mPhoneStateListener == null) { + return; + } mPhoneStateListener.unregister(); }