From 5ff07b7fd743c16df93415f28914317a6efb3cca Mon Sep 17 00:00:00 2001 From: skydoves Date: Sat, 10 Jan 2026 16:03:27 +0900 Subject: [PATCH] Prevent crashes when fragments are rapidly switched or garbage collected --- .../preference/ColorPickerPreferenceManager.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/colorpickerview/src/main/java/com/skydoves/colorpickerview/preference/ColorPickerPreferenceManager.java b/colorpickerview/src/main/java/com/skydoves/colorpickerview/preference/ColorPickerPreferenceManager.java index e9c56a7..554cabd 100644 --- a/colorpickerview/src/main/java/com/skydoves/colorpickerview/preference/ColorPickerPreferenceManager.java +++ b/colorpickerview/src/main/java/com/skydoves/colorpickerview/preference/ColorPickerPreferenceManager.java @@ -97,6 +97,9 @@ public ColorPickerPreferenceManager clearSavedColor(String name) { * @return {@link ColorPickerPreferenceManager}. */ public ColorPickerPreferenceManager setSelectorPosition(String name, Point position) { + if (position == null) { + return colorPickerPreferenceManager; + } sharedPreferences.edit().putInt(getSelectorXName(name), position.x).apply(); sharedPreferences.edit().putInt(getSelectorYName(name), position.y).apply(); return colorPickerPreferenceManager; @@ -110,9 +113,11 @@ public ColorPickerPreferenceManager setSelectorPosition(String name, Point posit * @return the saved selector position. */ public Point getSelectorPosition(String name, Point defaultPoint) { + int defaultX = defaultPoint != null ? defaultPoint.x : 0; + int defaultY = defaultPoint != null ? defaultPoint.y : 0; return new Point( - sharedPreferences.getInt(getSelectorXName(name), defaultPoint.x), - sharedPreferences.getInt(getSelectorYName(name), defaultPoint.y)); + sharedPreferences.getInt(getSelectorXName(name), defaultX), + sharedPreferences.getInt(getSelectorYName(name), defaultY)); } /**