Krupen / FabulousFilter

Android library to animate Floating Action Button to Bottom Sheet Dialog and vice-versa
Apache License 2.0
2.68k stars 323 forks source link

NullPointerException in ViewPagerBottomSheetBehavior for sdk version 27 #9

Closed agicquel closed 6 years ago

agicquel commented 6 years ago

Hello, I tried to execute the fragment code exemple with the sdk version 27 and I get a crash although it works perfectly with sdk version 26.

May be I could try to fix it I i get enough free time ;-) This lib rocks, great work . šŸ‘

Here's the stacktrace :

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.ViewDragHelper.processTouchEvent(android.view.MotionEvent)' on a null object reference at com.allattentionhere.fabulousfilter.viewpagerbottomsheet.ViewPagerBottomSheetBehavior.onTouchEvent(ViewPagerBottomSheetBehavior.java:274) at android.support.design.widget.CoordinatorLayout.resetTouchBehaviors(CoordinatorLayout.java:389) at android.support.design.widget.CoordinatorLayout.onAttachedToWindow(CoordinatorLayout.java:235) at android.view.View.dispatchAttachedToWindow(View.java:15543) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2955) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2962) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2962) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2962) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2962) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2962) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1650) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1366) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6768) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:926) at android.view.Choreographer.doCallbacks(Choreographer.java:735) at android.view.Choreographer.doFrame(Choreographer.java:667) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:912) 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:6523) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

shahimclt commented 6 years ago

Me too. any progress?

agicquel commented 6 years ago

Nope didn't have the time to explore further !

shahimclt commented 6 years ago

@agicquel good to know. I will try to fix it myself if I get the time. Let me know if you figure out something.

agicquel commented 6 years ago

@shahimclt OK, great ;)

giaur500 commented 6 years ago

Problem is at line 176. onLayoutChild override is never called when compiling with sdk 27, so mViewDragHelper is null. I'm not sure what is the reason, either it's some kind of bug in sdk 27, or some api changes (but I can't find any info about that).

If anybody have some idea, I would be happy to see.

shahimclt commented 6 years ago

@giaur500 True. Seems to be because onTouchEvent is being called before onLayoutChild has been called. Not sure if a bug in Support lib, or because some method is being called from the library in a way it's not supposed to. Need to go deeper.

giaur500 commented 6 years ago

@shahimclt do you have any idea? To be honest, I don't fully understand how that api works, need to learn a bit first.

Krupen commented 6 years ago

Hi everyone, Apologies for very late reply, I had lost my Github account and fortunately was able to get it back. I will soon look into it and update the repo.

pcg92 commented 6 years ago

any idea?

maurosoft1973 commented 6 years ago

Hi everyone, i clone the repository and fix the bug. Add this code: if (mViewDragHelper == null) { mViewDragHelper = ViewDragHelper.create(parent, mDragCallback); } before mViewDragHelper.processTouchEvent(event); into ViewPagerBottomSheetBehavior file (line 274)

agicquel commented 6 years ago

Fantastic ! I close the close the issue.

pcg92 commented 6 years ago

waiting for new version

Krupen commented 6 years ago

So I tried using sdk 27 and surprisingly I got different error, solving this one and will also update the above fix. If anyone had this error and solved it, please let me know.

java.lang.NoSuchMethodError: No static method getScreenWidthDp(Landroid/content/res/Resources;)I in class Landroid/support/v4/content/res/ConfigurationHelper; or its super classes (declaration of 'android.support.v4.content.res.ConfigurationHelper' appears in /data/app/com.example.krupen.fabfiltersample-1/split_lib_dependencies_apk.apk)
                                                                                        at android.support.design.widget.FloatingActionButton.getSizeDimension(FloatingActionButton.java:442)
                                                                                        at android.support.design.widget.FloatingActionButton.getSizeDimension(FloatingActionButton.java:434)
                                                                                        at android.support.design.widget.FloatingActionButton.onMeasure(FloatingActionButton.java:189)
                                                                                        at android.view.View.measure(View.java:19857)
                                                                                        at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
                                                                                        at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
                                                                                        at android.view.View.measure(View.java:19857)
                                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                                                                                        at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
                                                                                        at android.view.View.measure(View.java:19857)
                                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                                        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                                                                                        at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
                                                                                        at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
                                                                                        at android.view.View.measure(View.java:19857)
                                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                                                                                        at android.view.View.measure(View.java:19857)
                                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                                        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
                                                                                        at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
                                                                                        at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
                                                                                        at android.view.View.measure(View.java:19857)
                                                                                        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
                                                                                        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
                                                                                        at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689)
                                                                                        at android.view.View.measure(View.java:19857)
                                                                                        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275)
                                                                                        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366)
                                                                                        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619)
                                                                                        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
                                                                                        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337)
                                                                                        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
                                                                                        at android.view.Choreographer.doCallbacks(Choreographer.java:686)
                                                                                        at android.view.Choreographer.doFrame(Choreographer.java:621)
                                                                                        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
                                                                                        at android.os.Handler.handleCallback(Handler.java:751)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                        at android.os.Looper.loop(Looper.java:154)
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Krupen commented 6 years ago

Hi everyone, updated the library to v0.0.5 with the crash fix. Thank you @maurosoft1973 for finding and solving the bug.

TarunDholakiya commented 6 years ago

Thanks, @Krupen and @maurosoft1973 and everyone for keeping help each other. :)