El error del título se devuelve para el siguiente código, que no tiene sentido
private val _error = MutableLiveData<String?>() val error: LiveData<String?> get() = _error _error.postValue(null) //Error Cannot set non-nullable LiveData value to null [NullSafeMutableLiveData] El parámetro String of _error es obviamente anulable, ¿estoy haciendo algo mal?
Esto se ha corregido en la versión 2.3.1.
https://developer.android.com/jetpack/androidx/releases/lifecycle#version_231_2
Esto parece estar relacionado con un error ya informado contra el lanzamiento previo de androidx.lifecycle de 2.3.0 https://issuetracker.google.com/issues/169249668 .
Soluciones que he encontrado:
NullSafeMutableLiveData en build.gradle
android { ... lintOptions { disable 'NullSafeMutableLiveData' } } o lint.xml en el directorio raíz
<?xml version="1.0" encoding="UTF-8"?> <lint> <issue id="NullSafeMutableLiveData" severity="warning" /> </lint>MutableLiveData a través del baile de propiedades de respaldo (lo que realmente me duele los ojos). class ExampleViewModel : ViewModel() { private val _data1 = MutableLiveData<Int>() val data1: LiveData<Int> = _data1 private val _data2 = MutableLiveData<Int?>() val data2: LiveData<Int?> = _data2 fun funct() { _data1.value = 1 _data2.value = null } }Parece arreglado en el ciclo de vida 2.4.0-SNAPSHOT. Espere el lanzamiento oficial.
Este problema también apareció en 2.3.0 , pero después de actualizar a 2.4.0 no aparece.