From 72e5a7ea214b42e125821791a514e977b7ba9d5a Mon Sep 17 00:00:00 2001 From: Shen Lin Date: Mon, 17 Oct 2022 09:28:30 +0800 Subject: [PATCH] Fix crash when showing error dialog in NetworkRequestDialogActivity Fix: 253913148 Test: manual Change-Id: I23593da1ef6d72806f22d3501b06a8e7abadb100 --- .../settings/wifi/NetworkRequestDialogActivity.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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; }