From 0af2fa15bb853b1fae80cd9d852e1521beec64c5 Mon Sep 17 00:00:00 2001 From: Dirk Sierd de Vries Date: Thu, 13 Aug 2026 01:13:05 +0200 Subject: Guard home focus callbacks after view destruction --- app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt b/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt index c687e63..d381a74 100644 --- a/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt +++ b/app/src/main/java/app/sidephonelauncher/ui/HomeFragment.kt @@ -254,6 +254,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } fun shouldHandleUnfocusedDpadKeyEvent(): Boolean { + val binding = _binding ?: return false val focusedView = activity?.currentFocus return focusedView == null || focusedView == binding.mainLayout @@ -292,6 +293,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } private fun handleHomeKeyEvent(keyCode: Int, event: KeyEvent): Boolean { + val binding = _binding ?: return false val visibleApps = getVisibleHomeApps() if (activity?.currentFocus == binding.mainLayout) { @@ -385,6 +387,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } fun ensureHomeFocus(): Boolean { + if (_binding == null) return false val target = getPreferredHomeFocusTarget() ?: return false val focusedView = activity?.currentFocus if (focusedView == target && target.hasFocus()) return true @@ -424,6 +427,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } private fun getPreferredHomeFocusTarget(): View? { + val binding = _binding ?: return null val firstVisibleHomeApp = getVisibleHomeApps().firstOrNull() if (viewModel.consumeResetHomeFocusToFirstApp()) { return firstVisibleHomeApp ?: getTopHomeHeaderTargets().firstOrNull() @@ -443,6 +447,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } private fun getTopHomeHeaderTargets(): List { + val binding = _binding ?: return emptyList() return buildList { if (binding.clock.isVisible) add(binding.clock) if (binding.date.isVisible) add(binding.date) @@ -454,6 +459,7 @@ class HomeFragment : Fragment(), View.OnClickListener, View.OnLongClickListener } private fun getVisibleHomeApps(): List { + val binding = _binding ?: return emptyList() return listOf( binding.homeApp1, binding.homeApp2, -- cgit v1.2.1