From b6508345910f724aad320bfd0711310266bdd395 Mon Sep 17 00:00:00 2001 From: pollymce Date: Thu, 5 Feb 2026 14:44:02 +0000 Subject: [PATCH] Bug 2011184 - check fragment is added before finding nav controller. We are seeing `IllegalStateException`s in the play store from calling `findNavController` when the fragment is not associated with a transaction (the parentFragmentManager is null) `isAdded()` is the recommended way to find out if this fragment is attached to an activity and `findNavController()` is safe to call NB this fix is based on static analysis only - plan is to keep an eye on the crash logs after it lands to confirm it works. --- .../mozilla/fenix/search/SearchDialogFragment.kt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt index 236304609af99..78a20d3bcaae0 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/search/SearchDialogFragment.kt @@ -747,13 +747,15 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler { dialog.cancel() } setPositiveButton(R.string.qr_scanner_dialog_positive) { dialog: DialogInterface, _ -> - findNavController().openToBrowser() - requireComponents.useCases.fenixBrowserUseCases.loadUrlOrSearch( - searchTermOrURL = normalizedUrl, - newTab = store.state.tabId == null, - flags = EngineSession.LoadUrlFlags.external(), - ) - dialog.dismiss() + if (isAdded) { + findNavController().openToBrowser() + requireComponents.useCases.fenixBrowserUseCases.loadUrlOrSearch( + searchTermOrURL = normalizedUrl, + newTab = store.state.tabId == null, + flags = EngineSession.LoadUrlFlags.external(), + ) + dialog.dismiss() + } } create().withCenterAlignedButtons() }.show()