From f1bb01e1d64aca8ac4d9b9031b59b152b7399834 Mon Sep 17 00:00:00 2001 From: DrDisagree Date: Wed, 6 Nov 2024 01:52:40 +0600 Subject: [PATCH] Fix preference search crash Signed-off-by: DrDisagree --- .../ui/base/ControlledPreferenceFragmentCompat.kt | 4 +++- .../preferencesearch/SearchPreferenceResult.java | 11 +++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/drdisagree/iconify/ui/base/ControlledPreferenceFragmentCompat.kt b/app/src/main/java/com/drdisagree/iconify/ui/base/ControlledPreferenceFragmentCompat.kt index 10620f232..fc2fd9a68 100644 --- a/app/src/main/java/com/drdisagree/iconify/ui/base/ControlledPreferenceFragmentCompat.kt +++ b/app/src/main/java/com/drdisagree/iconify/ui/base/ControlledPreferenceFragmentCompat.kt @@ -223,8 +223,10 @@ abstract class ControlledPreferenceFragmentCompat : PreferenceFragmentCompat() { if (fragment is LockscreenClockParent) { resultFragment = LockscreenClockParent.getPreferenceFragment() fragment.scrollToPreference() + } else { + resultFragment = fragment as ControlledPreferenceFragmentCompat } - SearchPreferenceResult.highlight(resultFragment, result.key); + SearchPreferenceResult.highlight(resultFragment, result.key) break } } diff --git a/app/src/main/java/com/drdisagree/iconify/ui/preferences/preferencesearch/SearchPreferenceResult.java b/app/src/main/java/com/drdisagree/iconify/ui/preferences/preferencesearch/SearchPreferenceResult.java index 4e2b69970..b6613366a 100644 --- a/app/src/main/java/com/drdisagree/iconify/ui/preferences/preferencesearch/SearchPreferenceResult.java +++ b/app/src/main/java/com/drdisagree/iconify/ui/preferences/preferencesearch/SearchPreferenceResult.java @@ -5,10 +5,8 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; -import android.view.View; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.view.ViewCompat; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; @@ -32,10 +30,15 @@ public class SearchPreferenceResult { } public static void highlight(final PreferenceFragmentCompat prefsFragment, final String key) { - new Handler(Looper.getMainLooper()).post(() -> doHighlight(prefsFragment, key)); + new Handler(Looper.getMainLooper()).postDelayed(() -> doHighlight(prefsFragment, key), 100); } private static void doHighlight(final PreferenceFragmentCompat prefsFragment, final String key) { + if (prefsFragment == null) { + Log.w("doHighlight", "Preference fragment is null."); + return; + } + final Preference prefResult = prefsFragment.findPreference(key); if (prefResult == null) { @@ -154,7 +157,7 @@ public String getScreen() { */ @SuppressWarnings("unused") public void highlight(final PreferenceFragmentCompat prefsFragment) { - new Handler(Looper.getMainLooper()).post(() -> doHighlight(prefsFragment, getKey())); + new Handler(Looper.getMainLooper()).postDelayed(() -> doHighlight(prefsFragment, getKey()), 100); } /**