diff --git a/src/com/android/settings/wifi/NetworkRequestDialogActivity.java b/src/com/android/settings/wifi/NetworkRequestDialogActivity.java index 30f38d299e5..7b7d33fdce3 100644 --- a/src/com/android/settings/wifi/NetworkRequestDialogActivity.java +++ b/src/com/android/settings/wifi/NetworkRequestDialogActivity.java @@ -27,12 +27,14 @@ import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback; import android.os.Bundle; import android.os.Handler; import android.os.HandlerExecutor; +import android.os.Looper; import android.os.Message; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import com.android.settings.R; import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE; @@ -143,7 +145,7 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements super.onPause(); } - private final Handler mHandler = new Handler() { + private final Handler mHandler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(Message msg) { switch (msg.what) { @@ -162,13 +164,17 @@ public class NetworkRequestDialogActivity extends FragmentActivity implements dismissDialogs(); // Throws error dialog. + final FragmentManager fragmentManager = getSupportFragmentManager(); + if (fragmentManager.isDestroyed() || fragmentManager.isStateSaved()) { + return; + } final NetworkRequestErrorDialogFragment dialogFragment = NetworkRequestErrorDialogFragment.newInstance(); dialogFragment.setRejectCallback(mUserSelectionCallback); final Bundle bundle = new Bundle(); bundle.putSerializable(NetworkRequestErrorDialogFragment.DIALOG_TYPE, type); dialogFragment.setArguments(bundle); - dialogFragment.show(getSupportFragmentManager(), TAG); + dialogFragment.show(fragmentManager, TAG); mShowingErrorDialog = true; }