alexvasilkov / GestureViews

ImageView and FrameLayout with gestures control and position animation
Apache License 2.0
2.37k stars 384 forks source link

You should call enter(...) before calling update(...) crash #159

Open SaikrishnaRajaraman opened 4 years ago

SaikrishnaRajaraman commented 4 years ago
java.lang.IllegalStateException: You should call enter(...) before calling update(...)
    at com.alexvasilkov.gestures.animation.ViewPositionAnimator.cleanBeforeUpdateInternal(ViewPositionAnimator.java:4)
    at com.alexvasilkov.gestures.transition.ViewsTransitionAnimator.onFromViewChanged(ViewsTransitionAnimator.java:4)
    at com.alexvasilkov.gestures.transition.ViewsCoordinator.setFromInternal(ViewsCoordinator.java:3)
    at com.alexvasilkov.gestures.transition.internal.FromRecyclerViewListener$1.onChildViewAttachedToWindow(FromRecyclerViewListener.java:9)
    at androidx.recyclerview.widget.RecyclerView.dispatchChildAttached(RecyclerView.java:7)
    at androidx.recyclerview.widget.ChildHelper.addView(ChildHelper.java:7)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:13)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:2)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:1)
    at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:19)
    at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:12)
    at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:67)
    at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:3)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:8)
    at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:12)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.view.View.measure(View.java:23466)
    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
    at android.view.View.measure(View.java:23466)
    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:1)
    at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:53)
    at android.view.View.measure(View.java:23466)
    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:21)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1565)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:726)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1565)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:726)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6834)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at com.android.internal.policy.DecorView.onMeasure(DecorView.java:847)
    at android.view.View.measure(View.java:23466)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2954)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1753)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2041)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1636)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7946)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1092)
    at android.view.Choreographer.doCallbacks(Choreographer.java:893)
    at android.view.Choreographer.doFrame(Choreographer.java:812)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1078)
    at android.os.Handler.handleCallback(Handler.java:907)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:216)
    at android.app.ActivityThread.main(ActivityThread.java:7625)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
huybq93 commented 4 years ago

I have the same issue, does anyone have the way to fix it ? :(

alexvasilkov commented 3 years ago

Sorry for late response. I checked the code and cannot find the bug, the only possible error case I can see is if you are calling any of the library's methods from non-UI thread. Can you check that you are only calling it from the main thread?

To dive deeper into the problem I will need to have a sample code and steps that cause the issue. If I'll be able to reproduce the issue it will be much easier to find and fix it.

SaikrishnaRajaraman commented 3 years ago

We don't actually call anything from the background thread. Actually, I'm also not able to reproduce the crash. Some users are getting this crash.