Сбой при использовании ViewModel с репозиторием для базы данных помещений. ⇐ Android
Сбой при использовании ViewModel с репозиторием для базы данных помещений.
В настоящее время я пытаюсь настроить базу данных помещений для своего приложения. Мне удалось настроить саму комнату, следуя руководству по базе данных комнаты, но при попытке использовать созданную мной ViewModel приложение мгновенно вылетает, когда начинается действие, использующее ее.
Вот моя модель представления для этого действия:
пакет com.example.projetdevmob.ProjetUI импортировать androidx.compose.runtime.getValue импортировать androidx.compose.runtime.mutableStateOf импортировать androidx.compose.runtime.setValue импортировать androidx.lifecycle.ViewModel импортировать com.example.projetdevmob.Data.Player импортировать com.example.projetdevmob.Data.PlayerRepository класс SignupViewModel(private val playerRepository: PlayerRepository): ViewModel() { вар playerUiState от mutableStateOf(PlayerUiState()) весело updateUiState(playerDetails: PlayerDetails) { playerUiState = PlayerUiState(playerDetails = playerDetails, isEntryValid = validateInput(playerDetails)) } частное развлечение validateInput(uiState: PlayerDetails = PlayerUiState().playerDetails): Boolean { вернуться с (uiState) { name.isNotBlank() && пароль.isNotBlank() } } приостановить веселье savePlayer() { если (validateInput()) { playerRepository.insert(PlayerUiState().playerDetails.toPlayer()) } } в этом { playerUiState = PlayerUiState() } } класс данных PlayerUiState( val playerDetails: PlayerDetails = PlayerDetails(), val isEntryValid: Boolean = false ) класс данных PlayerDetails( идентификатор значения: Int = 0, имя значения: String = "", val пароль: String = "", вал лимкоины: Лонг = 0, ) весело PlayerDetails.toPlayer(): Player = Player( пользовательский идентификатор = пользовательский идентификатор, имя игрока = имя, playerPassword = пароль, playerLimcoins = лимкоины ) весело Player.toPlayerUiState(isEntryValid: Boolean = false): PlayerUiState = PlayerUiState( playerDetails = this.toPlayerDetails(), isEntryValid = isEntryValid ) весело Player.toPlayerDetails(): PlayerDetails = PlayerDetails( пользовательский идентификатор = пользовательский идентификатор, имя = имя игрока, пароль = пароль игрока, limcoins = playerLimcoins ) Сначала у меня не было фабрики для моей модели представления, поэтому я создал ее, следуя той же модели, что и в уроке:
пакет com.example.projetdevmob.ProjetUI импортировать androidx.lifecycle.AndroidViewModel импортировать androidx.lifecycle.ViewModelProvider импортировать androidx.lifecycle.viewmodel.CreationExtras импортировать androidx.lifecycle.viewmodel.initializer импортировать androidx.lifecycle.viewmodel.viewModelFactory объект AppViewModelProvider { val Factory = viewModelFactory { инициализатор { SignupViewModel(gameApplication().container.playerRepository) } } } весело CreationExtras.gameApplication(): GameApplication = (это\[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY\] как GameApplication) И, наконец, я создал класс приложения:
пакет com.example.projetdevmob.ProjetUI импортировать android.app.Application импортировать com.example.projetdevmob.Data.AppContainer импортировать com.example.projetdevmob.Data.AppDataContainer класс GameApplication : Приложение() { lateinit var контейнер: AppContainer переопределить удовольствие onCreate() { супер.onCreate() контейнер = AppDataContainer(это) } } manifest.xml:
//Деятельность
В настоящее время я пытаюсь настроить базу данных помещений для своего приложения. Мне удалось настроить саму комнату, следуя руководству по базе данных комнаты, но при попытке использовать созданную мной ViewModel приложение мгновенно вылетает, когда начинается действие, использующее ее.
Вот моя модель представления для этого действия:
пакет com.example.projetdevmob.ProjetUI импортировать androidx.compose.runtime.getValue импортировать androidx.compose.runtime.mutableStateOf импортировать androidx.compose.runtime.setValue импортировать androidx.lifecycle.ViewModel импортировать com.example.projetdevmob.Data.Player импортировать com.example.projetdevmob.Data.PlayerRepository класс SignupViewModel(private val playerRepository: PlayerRepository): ViewModel() { вар playerUiState от mutableStateOf(PlayerUiState()) весело updateUiState(playerDetails: PlayerDetails) { playerUiState = PlayerUiState(playerDetails = playerDetails, isEntryValid = validateInput(playerDetails)) } частное развлечение validateInput(uiState: PlayerDetails = PlayerUiState().playerDetails): Boolean { вернуться с (uiState) { name.isNotBlank() && пароль.isNotBlank() } } приостановить веселье savePlayer() { если (validateInput()) { playerRepository.insert(PlayerUiState().playerDetails.toPlayer()) } } в этом { playerUiState = PlayerUiState() } } класс данных PlayerUiState( val playerDetails: PlayerDetails = PlayerDetails(), val isEntryValid: Boolean = false ) класс данных PlayerDetails( идентификатор значения: Int = 0, имя значения: String = "", val пароль: String = "", вал лимкоины: Лонг = 0, ) весело PlayerDetails.toPlayer(): Player = Player( пользовательский идентификатор = пользовательский идентификатор, имя игрока = имя, playerPassword = пароль, playerLimcoins = лимкоины ) весело Player.toPlayerUiState(isEntryValid: Boolean = false): PlayerUiState = PlayerUiState( playerDetails = this.toPlayerDetails(), isEntryValid = isEntryValid ) весело Player.toPlayerDetails(): PlayerDetails = PlayerDetails( пользовательский идентификатор = пользовательский идентификатор, имя = имя игрока, пароль = пароль игрока, limcoins = playerLimcoins ) Сначала у меня не было фабрики для моей модели представления, поэтому я создал ее, следуя той же модели, что и в уроке:
пакет com.example.projetdevmob.ProjetUI импортировать androidx.lifecycle.AndroidViewModel импортировать androidx.lifecycle.ViewModelProvider импортировать androidx.lifecycle.viewmodel.CreationExtras импортировать androidx.lifecycle.viewmodel.initializer импортировать androidx.lifecycle.viewmodel.viewModelFactory объект AppViewModelProvider { val Factory = viewModelFactory { инициализатор { SignupViewModel(gameApplication().container.playerRepository) } } } весело CreationExtras.gameApplication(): GameApplication = (это\[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY\] как GameApplication) И, наконец, я создал класс приложения:
пакет com.example.projetdevmob.ProjetUI импортировать android.app.Application импортировать com.example.projetdevmob.Data.AppContainer импортировать com.example.projetdevmob.Data.AppDataContainer класс GameApplication : Приложение() { lateinit var контейнер: AppContainer переопределить удовольствие onCreate() { супер.onCreate() контейнер = AppDataContainer(это) } } manifest.xml:
//Деятельность
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема удаления данных из базы данных помещений (Android Studio Java)
Anonymous » » в форуме Android - 0 Ответы
- 76 Просмотры
-
Последнее сообщение Anonymous
-