Cannot assign to ‘value’: the setter is protected/*protected and package*/ for synthetic extension in ‘<library Grade: android.arch.livecycle:livedata-core-1.1.1>’
正如@spkink建议的那样:
更换
fun getCurrentName(): LiveData<String>
与
fun getCurrentName(): MutableLiveData<String>
造成此错误的原因setValue(T value)是protected在LiveData(所以你不能把它),而这是public在MutableLiveData。
Caused by: java.lang.NoSuchMethodException: <init> [class android.app.Application]
at java.lang.Class.getConstructor(Class.java:531)
at java.lang.Class.getConstructor(Class.java:495)
at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:259)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:179)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:145)
解决AndroidViewModel 的Application 填系统的 不能填自己定义的
class NeiHanViewModel(val application: MyApplication) : AndroidViewModel(application)
改为
class NeiHanViewModel(val application: Application) : AndroidViewModel(application)