From 5deb528695a8a47156a331b2a0182fabef0253d7 Mon Sep 17 00:00:00 2001 From: Andy Street Date: Mon, 19 Sep 2016 04:12:22 -0700 Subject: [PATCH] Don't crash if OEM has replaced OverScroller in ScrollView Summary: Some OEMs have changed out the default scroller implementation in their ScrollView. We now check for that case and handle it gracefully instead of crashing. Reviewed By: foghina Differential Revision: D3876492 fbshipit-source-id: 4d03b88c4972e939c8352eeb9f30275e3ecf76e2 --- .../facebook/react/views/scroll/ReactScrollView.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java index 09c938091..31ff032e8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java @@ -82,7 +82,16 @@ public class ReactScrollView extends ScrollView implements ReactClippingViewGrou if (sScrollerField != null) { try { - mScroller = (OverScroller) sScrollerField.get(this); + Object scroller = sScrollerField.get(this); + if (scroller instanceof OverScroller) { + mScroller = (OverScroller) scroller; + } else { + Log.w( + ReactConstants.TAG, + "Failed to cast mScroller field in ScrollView (probably due to OEM changes to AOSP)! " + + "This app will exhibit the bounce-back scrolling bug :("); + mScroller = null; + } } catch (IllegalAccessException e) { throw new RuntimeException("Failed to get mScroller from ScrollView!", e); }