LoadingButtonAndroid icon indicating copy to clipboard operation
LoadingButtonAndroid copied to clipboard

lateinit property initialState has not been initialized in version 2.1.4

Open Ahmed-Adel-Ismail opened this issue 5 years ago • 11 comments

the same issue here : https://github.com/leandroBorgesFerreira/LoadingButtonAndroid/issues/119

is happening on version 2.1.4, not fixed yet ... these are the logs :

Caused by: kotlin.UninitializedPropertyAccessException: lateinit property initialState has not been initialized at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.access$getInitialState$p(CircularProgressButton.kt:21) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton$morphAnimator$2.invoke(CircularProgressButton.kt:70) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton$morphAnimator$2.invoke(CircularProgressButton.kt:21) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.getMorphAnimator(Unknown Source:7) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.dispose(CircularProgressButton.kt:171) at java.lang.reflect.Method.invoke(Native Method) at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:216) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185) at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:36) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361) at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.java:316) at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:334) at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145) at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131) at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:123) at androidx.lifecycle.ReportFragment.onDestroy(ReportFragment.java:108) at android.app.Fragment.performDestroy(Fragment.java:2870) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1424) at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1554) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1616) at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3044) at android.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:3024) at android.app.FragmentController.dispatchDestroy(FragmentController.java:244) at android.app.Activity.performDestroy(Activity.java:7251) at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1249) at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4492) at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4523) at android.app.ActivityThread.-wrap5(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1683) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:6701) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:249) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)

Ahmed-Adel-Ismail avatar Aug 23 '19 16:08 Ahmed-Adel-Ismail

The issue here, still happening on 2.1.5

mhelmi avatar Aug 25 '19 22:08 mhelmi

The problem happened for me when I observe loadingLiveData to start or stop animation if I transaction another fragment and back to the fragment that included the CircleProgressButton it's start to observe loadingLiveData variable again and get the last value and try to revert morph animation while the current state is stop so it's crashes and give the above error.

I solved this problem by check the state before morph, so the btn can't start morph while it's not morph any more. The working check solution for my case was:

if (btn.getState().equals(State.MORPHING) || btn.getState().equals(State.PROGRESS)) btn.startMorphRevertAnimation();

mhelmi avatar Aug 25 '19 23:08 mhelmi

Sorry, taking so long for the reply. I'll take a look as soon as I can.

leandroBorgesFerreira avatar Nov 01 '19 09:11 leandroBorgesFerreira

I have the same issue on android 4.2.2

uncledoc avatar Nov 15 '19 06:11 uncledoc

The same issue is happening to me as well

chetan3333 avatar Jul 10 '20 08:07 chetan3333

it there any update for this issue? @leandroBorgesFerreira I have faced it when I am using btn in the adapter and try to update adapter to start loading

mhelmi avatar Sep 14 '20 16:09 mhelmi

Sorry for the late response... I can't reproduce it in the sample app. I fire the start animation inside the onCreate of an activity and it works just fine =|

Maybe inside a fragment... Let's see.

leandroBorgesFerreira avatar Mar 23 '21 17:03 leandroBorgesFerreira

I' have the same issue in version 2.2.0

piotrwroblewski90 avatar Mar 25 '21 07:03 piotrwroblewski90

I' have the same issue in version 2.2.0. Please take a look at this stacktrace

Caused by kotlin.UninitializedPropertyAccessException: lateinit property initialState has not been initialized at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.access$getInitialState$p(CircularProgressButton.kt:21) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton$morphAnimator$2.invoke(CircularProgressButton.kt:70) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton$morphAnimator$2.invoke(CircularProgressButton.kt:21) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.getMorphAnimator(:7) at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.dispose(CircularProgressButton.kt:171) at java.lang.reflect.Method.invoke(Method.java) at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:216) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194) at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185) ....

josechagas avatar Sep 15 '21 17:09 josechagas

Same issue...

Got Stacktrace from Crashlytics console.

Caused by kotlin.UninitializedPropertyAccessException: lateinit property initialState has not been initialized
       at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.access$getInitialState$p(CircularProgressButton.kt:21)
       at br.com.simplepass.loadingbutton.customViews.CircularProgressButton$morphAnimator$2.invoke(CircularProgressButton.kt:70)
       at br.com.simplepass.loadingbutton.customViews.CircularProgressButton$morphAnimator$2.invoke(CircularProgressButton.kt:21)
       at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
       at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.getMorphAnimator(:7)
       at br.com.simplepass.loadingbutton.customViews.CircularProgressButton.dispose(CircularProgressButton.kt:171)
       at java.lang.reflect.Method.invoke(Method.java)
       at androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback(ClassesInfoCache.java:216)
       at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent(ClassesInfoCache.java:194)
       at androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks(ClassesInfoCache.java:185)
       at androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged(ReflectiveGenericLifecycleObserver.java:37)
       at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
       at androidx.lifecycle.LifecycleRegistry.backwardPass(LifecycleRegistry.java:316)
       at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:334)
       at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)
       at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)
       at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68)
       at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:144)
       at androidx.lifecycle.ReportFragment.onDestroy(ReportFragment.java:134)
       at android.app.Fragment.performDestroy(Fragment.java:2782)
       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1451)
       at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1581)
       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1642)
       at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3051)
       at android.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:3031)
       at android.app.FragmentController.dispatchDestroy(FragmentController.java:248)
       at android.app.Activity.performDestroy(Activity.java:7521)
       at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1307)
       at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4502)
       at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4535)
       at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:39)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:201)
       at android.app.ActivityThread.main(ActivityThread.java:6826)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

pacifire avatar Nov 20 '21 09:11 pacifire

It seem like I could prevent that crash by calling button to dispose in onDestroyView : override fun onDestroyView() { super.onDestroyView() progressButton.dispose() } FYI : use in Fragment

This crash happened when I call dispose in onDestroy : override fun onDestroy() { super.onDestroy() progressButton.dispose() }

ChhaiHout avatar Nov 23 '21 03:11 ChhaiHout