Использовал в проекте sharedViewModel.
Все было нормально, когда существовал только один nav_graph.
Но после того, как я разделил основной граф на главный nav_graph и feature_graph, все рухнуло.
У меня есть 2 графа навигации.
1.Главный nav_graph.
2.Второй граф для фичи.
Я пытаюсь перейти от первого графа ко второму. Приложение работает нормально.
Но проблема возникает, когда я пытаюсь при старте фрагмента с feature графа получить sharedViewModel с помощью этого кода.
inline fun <reified VM : ViewModel> Fragment.sharedGraphViewModel(
@IdRes navGraphId: Int = R.id.nav_graph,
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<VM> = lazy{
val store = findNavController().getViewModelStoreOwner(navGraphId).viewModelStore
getKoin().getViewModel(ViewModelParameter(VM::class, qualifier, parameters, Bundle(), store, null))
}
Получаю такой Exception
java.lang.IllegalArgumentException: No destination with ID 2131689472 is on the NavController's back stack. The current destination is Destination(com.bykhkalo.apps.walletapp:id/create_outgoing_fragment)
Не могу понять в чём может быть проблема.
В приложении только одна activity и только один
FragmentContainerView
Ниже код графов навигации
Главный nav_graph.
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_graph"
app:startDestination="@id/summary_fragment">
<include app:graph="@navigation/create_outgoing_graph"/>
<fragment
android:id="@+id/summary_fragment"
android:name="com.bykhkalo.apps.walletapp.feature.summary.view.SummaryFragment"
android:label="@string/summary_fragment_title"
tools:layout="@layout/fragment_summary"
>
<action
android:id="@+id/action_summaryFragment_to_choseEventTypeFragment"
app:destination="@id/chose_event_type_fragment"
app:popUpToInclusive="true"
/>
</fragment>
<fragment
android:id="@+id/chose_event_type_fragment"
android:name="com.bykhkalo.apps.walletapp.feature.summary.view.ChoseEventTypeFragment"
tools:layout="@layout/fragment_chose_event_type"
>
<action
android:id="@+id/action_choseEventTypeFragment_to_createOutgoingFragment"
app:destination="@id/create_outgoing_graph"
app:popUpToInclusive="true"
/>
</fragment>
</navigation>
Feature граф
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/create_outgoing_fragment"
android:id="@+id/create_outgoing_graph">
<fragment
android:id="@+id/create_outgoing_fragment"
android:name="com.bykhkalo.apps.walletapp.feature.summary.view.CreateOutgoingFragment"
tools:layout="@layout/fragment_create_outgoing">
<action
android:id="@+id/action_createOutgoingFragment_to_createCheckFragment"
app:destination="@id/create_check__fragment"
app:popUpToInclusive="true"
/>
<action
android:id="@+id/action_createOutgoingFragment_to_chooseOutgoingCategoryFragment"
app:destination="@id/chose_outgoing_category_fragment"
app:popUpToInclusive="true"
/>
</fragment>
<fragment
android:id="@+id/create_check__fragment"
android:name="com.bykhkalo.apps.walletapp.feature.summary.view.CreateCheckFragment"
tools:layout="@layout/fragment_create_check"/>
<fragment
android:id="@+id/chose_outgoing_category_fragment"
android:name="com.bykhkalo.apps.walletapp.feature.summary.view.ChooseOutgoingCategoryFragment"
tools:layout="@layout/fragment_choose_outgoing_category"/>
</navigation>