mate.herber
03/13/2018, 10:28 PMCaused by: java.lang.IllegalStateException: Fragment org.kodein.android.KodeinFragment must be a public static class to be properly recreated from instance state.
at android.app.BackStackRecord.doAddOp(BackStackRecord.java:429)
at android.app.BackStackRecord.add(BackStackRecord.java:409)
at org.kodein.android.RetainedKt$retainedKodein$1.invoke(retained.kt:26)
at org.kodein.android.RetainedKt$retainedKodein$1.invoke(Unknown Source:0)
at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
...
mate.herber
03/13/2018, 10:29 PMmate.herber
03/13/2018, 10:37 PMmate.herber
03/13/2018, 10:40 PMstreetsofboston
03/13/2018, 10:52 PMKodeinFragment
is a private final class
when looking at the kodein-framework-android dependency contents
This means you can’t instantiate nor subclass from it.
And every Android concrete Fragment must be public and have a public empty/default constructor.mate.herber
03/13/2018, 10:55 PMstreetsofboston
03/13/2018, 11:41 PMActivity.retainedKodein
). Still, a concrete fragment must have a public empty/default constructor. If not, your app will crash when a configuration change (e.g rotation of the phone) happens. This seems to be a bug in Kodein. @salomonbrys Is this a bug?mate.herber
03/14/2018, 7:45 AMsalomonbrys
03/16/2018, 2:57 PMKodeinFragment
is supposed to be registered as a retained fragment. So it should not be recreated by the system as it should be preserved between config changes.salomonbrys
03/16/2018, 3:03 PMsalomonbrys
03/16/2018, 3:05 PMstreetsofboston
03/16/2018, 3:16 PMsetRetainInstance(true)
on the Fragmentsalomonbrys
03/16/2018, 3:17 PMsalomonbrys
03/16/2018, 3:17 PMstreetsofboston
03/16/2018, 3:21 PMsalomonbrys
03/16/2018, 3:25 PMsetRetainInstance(true)
), but it does still check the conformity 😞streetsofboston
03/16/2018, 3:26 PMsalomonbrys
03/16/2018, 3:27 PM