From 75e6f7961fb3f6de6afbe79d49c42ad55fba1673 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Mon, 22 Jun 2020 12:40:01 -0700 Subject: [PATCH] Fix measure of ReactSlider for Android API < 21 Summary: This diff avoids calling to the method setStateListAnimator for users running in Android API < 21 (This method did not exist in Android API < 21) changelog: [Android][Fix] Fix crash while measuring ReactSlider in Android API < 21 Reviewed By: lunaleaps Differential Revision: D22164574 fbshipit-source-id: 8163f99eeb78302fc75e2c4938330c699ca8d363 --- .../java/com/facebook/react/views/slider/ReactSlider.java | 2 +- .../com/facebook/react/views/slider/ReactSliderManager.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlider.java b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlider.java index d2bac91e0b5..03d527b02d9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlider.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSlider.java @@ -53,7 +53,7 @@ public class ReactSlider extends AppCompatSeekBar { disableStateListAnimatorIfNeeded(); } - private void disableStateListAnimatorIfNeeded() { + /* package */ void disableStateListAnimatorIfNeeded() { // We disable the state list animator for Android 6 and 7; this is a hack to prevent T37452851 // and https://github.com/facebook/react-native/issues/9979 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java index ff5da0ccb69..9c8bc9ced0b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java @@ -72,11 +72,11 @@ public class ReactSliderManager extends SimpleViewManager float height, YogaMeasureMode heightMode) { if (!mMeasured) { - SeekBar reactSlider = new ReactSlider(getThemedContext(), null, STYLE); + ReactSlider reactSlider = new ReactSlider(getThemedContext(), null, STYLE); // reactSlider is used for measurements purposes, it is not necessary to set a // StateListAnimator. // It is not safe to access StateListAnimator from a background thread. - reactSlider.setStateListAnimator(null); + reactSlider.disableStateListAnimatorIfNeeded(); final int spec = View.MeasureSpec.makeMeasureSpec( ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED);