Используя жизненный цикл Android, State RegisterOwenr(SavedStateRegistryOwner, ViewModelStoreOwner, HasDefaultViewModelProviderFactory) может использовать модель представления без внедрения зависимостей hilt.
Я хочу использовать внедрение зависимостей рукоятки в оверлейном приложении. Поскольку приложение Overlay не использует никаких действий, например (ComponentActivity/AppCompactActivity). Чтобы отобразить экран виджета наложения, откройте приложение и после отображения виджета наложения закройте приложение. Итак, виджет Overly все еще работает.
[ На сайте hilt Developer.android.com упоминается, что Hilt поддерживает только действия, расширяющие ComponentActivity, такие как AppCompatActivity. есть ли какой-нибудь способ изменить или переопределить класс HiltViewModelFactory
](https://i.sstatic.net/4aT2ulYL.png)
класс HiltNavBackStackEntry
Это наш код в Compose. для наложения мы используем плавающее окно.
val viewModel: OnBoardingViewModel = hiltViewModel()
ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: main
Процесс: com.harman.caep.space5.companion, PID: 26061 **java.lang.IllegalStateException: ожидался контекст активности для создания HiltViewModelFactory, но вместо этого найден: android.app.ContextImpl@74633f5 ** at androidx.hilt.navigation.HiltViewModelFactory.create(HiltNavBackStackEntry.kt:70)
fun NavGraphBuilder.onBoardingGraph(
navController: NavController,
onboardingSave: () -> Единица
) {
Код: Выделить всё
navigation(startDestination = Screen.Registration.route, route = OnBoardingNavGraphRoute) {
composable(route = Screen.Registration.route) {
val viewModel: OnBoardingViewModel = hiltViewModel()
val uiState = viewModel.registrationScreenUiState.collectAsState()
RegistrationScreen(
//uiState.value,
onRegistrationDataSave = {
navController.navigate(Screen.SeatSelection.route)
}
)
}
composable(route = Screen.Login.route) {
val viewModel: OnBoardingViewModel = hiltViewModel()
val loginScreenUiState = viewModel.loginScreenUiState.collectAsState()
LoginScreen(loginScreenUiState.value)
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... lay-screen
Мобильная версия