I have problem with Android dynamic features navigation. When I came back to the app after long inactivity (or with don't keep activities option enabled) my app crashes.
Crash comes from DynamicIncludeGraphNavigator.onRestoreState() method and is caused by java.util.ConcurrentModificationException. Does anyone know how to solve this issue?
Library version: 2.3.0-alpha04
Full stacktrace:
Caused by: android.view.InflateException: Binary XML file line #19 in activity_main: Error inflating class fragment
Caused by: java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.remove(ArrayList.java:875)
at androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.onRestoreState(DynamicIncludeGraphNavigator.kt:122)
at androidx.navigation.NavController.onGraphCreated(NavController.java:595)
at androidx.navigation.NavController.setGraph(NavController.java:583)
at androidx.navigation.NavController.setGraph(NavController.java:548)
at androidx.navigation.NavController.setGraph(NavController.java:530)
at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:237)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2684)
at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:280)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1175)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:135)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:356)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:335)
at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1069)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:303)
at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284)
DynamicIncludeGraphNavigator.onRestoreState() content:
override fun onRestoreState(savedState: Bundle) {
super.onRestoreState(savedState)
val iterator = createdDestinations.iterator()
while (iterator.hasNext()) {
val dynamicNavGraph = iterator.next()
val moduleName = dynamicNavGraph.moduleName
if (moduleName == null || !installManager.needsInstall(moduleName)) {
replaceWithIncludedNav(dynamicNavGraph)
}
iterator.remove()
}
}