Я пытаюсь ввести sharedViewModel
, используя arguments
в качестве key
.
private val args: TrackDetailFragmentArgs by navArgs()
private val trackVM: TrackDetailViewModel by sharedViewModel(key = args.trackId.toString())
Это ошибка, которую я получаю
Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.marcheoutdoor.fragments.TrackDetailFragment: calling Fragment constructor caused an exception
at androidx.fragment.app.Fragment.instantiate(Fragment.java:474)
at androidx.navigation.fragment.FragmentNavigator.instantiateFragment(FragmentNavigator.java:165)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:181)
at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:50)
at androidx.navigation.NavController.navigate(NavController.java:797)
at androidx.navigation.NavController.navigate(NavController.java:782)
at androidx.navigation.NavController.navigate(NavController.java:719)
at androidx.navigation.NavController.navigate(NavController.java:705)
at androidx.navigation.NavController.navigate(NavController.java:837)
Япредполагаю, что arguments
равны нулю, когда sharedViewModel
вводится, но я не уверен.
Как я могу использовать trackId
как key
(или, возможно, как parameter
?) при получении из arguments
?
EDIT1 : я пытался использовать прямой вызов arguments
, и он работает
private val trackVM: TrackDetailViewModel by sharedViewModel(key = arguments?.getLong("trackId").toString())
Так что я предполагаючто-то не так с вызовом navArgs()
.
EDIT2 : как подсказывает Commonware , EDIT1
на самом деле не работает, он просто передает null
key
к методу.Я теряю надежду, что есть способ использовать этот подход.