Затем я изменил функцию viewModel на функцию приостановки и вызвал ее из сопрограммы во фрагменте. это тоже не сработало.
Итак, я сделал так, чтобы функция вызывалась внутри сопрограммы, которая затем запускала другую сопрограмму в области viewModel. Это дало тот же результат.
Я подумал, что вызов его во время создания фрагмента может оказаться слишком большой нагрузкой. поэтому я попытался вызвать функцию viewModel с помощью прослушивателя нажатия кнопки. снова произошел сбой.
Я выполнил тот же запрос в инспекторе базы данных, и он работал нормально. так что проблема не в запросе.
На снимке экрана ниже я включил все необходимые подробности, касающиеся проблемы. Просто сосредоточьтесь на выделенном контенте. начать с фрагмента списка пропусков (вкладка вверху слева). Отсюда вызов функции viewModel на верхней правой вкладке. оттуда DAO прямо под ним. затем класс данных под ним.
Снимок экрана студии Android —
функция viewModel -
fun resetAllAccess(){
viewModelScope.launch {
passwordDao.resetAccessForAll()
}
}
Функция DAO -
@Query("UPDATE password_data SET access = 0 WHERE access = 1")
fun resetAccessForAll()
Класс данных для базы данных –
@Entity(tableName = "password_data")
data class PasswordData(
@PrimaryKey(autoGenerate = true) val id: Int = 0,
@ColumnInfo(name = "service_name") var serviceName: String,
@ColumnInfo(name = "service_password") var servicePassword: String,
@ColumnInfo(name = "is_an_application") var isAnApplication: Boolean = false,
@ColumnInfo(name = "use_finger_print") var useFingerPrint: Boolean = true,
@ColumnInfo(name = "access") var access: Boolean = false
)
вызов из фрагмента -
CoroutineScope(Dispatchers.IO).launch { viewModel.resetAllAccess() }
Подробнее здесь: https://stackoverflow.com/questions/705 ... ock-the-ui
Мобильная версия