diff --git a/src/com/android/settings/sim/SimDialogFragment.java b/src/com/android/settings/sim/SimDialogFragment.java index de991ec14f8..362fccc75ab 100644 --- a/src/com/android/settings/sim/SimDialogFragment.java +++ b/src/com/android/settings/sim/SimDialogFragment.java @@ -16,20 +16,25 @@ package com.android.settings.sim; +import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import androidx.annotation.NonNull; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settings.network.SubscriptionsChangeListener; /** Common functionality for showing a dialog in SimDialogActivity. */ -public abstract class SimDialogFragment extends InstrumentedDialogFragment { +public abstract class SimDialogFragment extends InstrumentedDialogFragment implements + SubscriptionsChangeListener.SubscriptionsChangeListenerClient { private static final String TAG = "SimDialogFragment"; private static final String KEY_TITLE_ID = "title_id"; private static final String KEY_DIALOG_TYPE = "dialog_type"; + private SubscriptionsChangeListener mChangeListener; + protected static Bundle initArguments(int dialogType, int titleResId) { final Bundle args = new Bundle(); args.putInt(KEY_DIALOG_TYPE, dialogType); @@ -45,6 +50,24 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment { return getArguments().getInt(KEY_TITLE_ID); } + @Override + public void onAttach(Context context) { + super.onAttach(context); + mChangeListener = new SubscriptionsChangeListener(context, this); + } + + @Override + public void onPause() { + super.onPause(); + mChangeListener.stop(); + } + + @Override + public void onResume() { + super.onResume(); + mChangeListener.start(); + } + @Override public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); @@ -55,4 +78,13 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment { } public abstract void updateDialog(); + + @Override + public void onAirplaneModeChanged(boolean airplaneModeEnabled) { + } + + @Override + public void onSubscriptionsChanged() { + updateDialog(); + } } diff --git a/tests/robotests/src/com/android/settings/sim/SimListDialogFragmentTest.java b/tests/robotests/src/com/android/settings/sim/SimListDialogFragmentTest.java index 2b33ebe6c20..6a9590be3e0 100644 --- a/tests/robotests/src/com/android/settings/sim/SimListDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/sim/SimListDialogFragmentTest.java @@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.telephony.SubscriptionManager; @@ -77,6 +78,22 @@ public class SimListDialogFragmentTest extends SimDialogFragmentTestBase