Как использовать hiltviewmodel на экране создания приложенияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как использовать hiltviewmodel на экране создания приложения

Сообщение Anonymous »

Я реализовал экран Appoverlay в Compose. Я могу показывать заполнение экрана других приложений или домашних экранов мобильных устройств.
Используя жизненный цикл 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»