RtlViewPager icon indicating copy to clipboard operation
RtlViewPager copied to clipboard

NullPointerException when notifying listener about page scrolled

Open gkylafas opened this issue 6 years ago • 0 comments

Backtrace

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getLeft()' on a null object reference
       at android.support.design.widget.TabLayout.calculateScrollXForTab(TabLayout.java:1191)
       at android.support.design.widget.TabLayout.setScrollPosition(TabLayout.java:425)
       at android.support.design.widget.TabLayout$TabLayoutOnPageChangeListener.onPageScrolled(TabLayout.java:2134)
       at com.booking.rtlviewpager.RtlViewPager$ReverseOnPageChangeListener.onPageScrolled(RtlViewPager.java:253)
       at android.support.v4.view.ViewPager.dispatchOnPageScrolled(ViewPager.java:1924)
       at android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1898)
       at android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1836)
       at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:688)
       at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1780)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:325)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:132)
       at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
       at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361)
       at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:874)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1172)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:325)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1766)
       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1610)
       at android.widget.LinearLayout.onLayout(LinearLayout.java:1519)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:325)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1766)
       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1610)
       at android.widget.LinearLayout.onLayout(LinearLayout.java:1519)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.widget.FrameLayout.layoutChildren(FrameLayout.java:325)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
       at com.android.internal.policy.DecorView.onLayout(DecorView.java:774)
       at android.view.View.layout(View.java:17708)
       at android.view.ViewGroup.layout(ViewGroup.java:5631)
       at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2519)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2234)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1372)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6782)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:933)
       at android.view.Choreographer.doCallbacks(Choreographer.java:742)
       at android.view.Choreographer.doFrame(Choreographer.java:674)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:919)
       at android.os.Handler.handleCallback(Handler.java:761)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:156)
       at android.app.ActivityThread.main(ActivityThread.java:6605)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:999)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:889)

The code in the support library that throws the exception is

final View selectedChild = mTabStrip.getChildAt(position);
...
int scrollBase = selectedChild.getLeft() + ...

so I have the impression that this might be fixed by #4 of @Biggemott. However, even if it has been merged almost two years ago, no new release has been made since then. @diego-gomez-olvera, could you please release a new version including this fix?

gkylafas avatar Mar 06 '18 08:03 gkylafas