Сбой при использовании ViewModel с репозиторием для базы данных помещений.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Сбой при использовании ViewModel с репозиторием для базы данных помещений.

Сообщение Anonymous »


В настоящее время я пытаюсь настроить базу данных помещений для своего приложения. Мне удалось настроить саму комнату, следуя руководству по базе данных комнаты, но при попытке использовать созданную мной 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:

//Деятельность
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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