android - 实时数据。无法分配给 ‘value’ : the setter is protected/*protected and package*/for synthetic extension

标签 android kotlin android-architecture-components android-livedata

我正在尝试使用 android documentation 中所述的 LiveData 实现 DB Observer .

只要我在 Kotlin 中编程,我就会将函数(最初用 Java 编写)适应它。

在尝试保存数据时,我发现了这个问题。

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>’

有人遇到过这个问题吗?

这是我的代码:

ViewModel:

class ProfileViewModel: ViewModel() {

    object FirstName: MutableLiveData<String>()

    fun getCurrentName(): LiveData<String> {
        return FirstName
    }
}

Fragment

class ProfileFragment{

    private lateinit var model: ProfileViewModel

    // this is called onViewCreated. inputFirstName is an Edittext.
    override fun setUp() {
        model = ViewModelProviders.of(this).get(ProfileViewModel::class.java)

        val nameObserver = Observer<String> { firstName ->
            inputFirstName.text = SpannableStringBuilder(firstName)
        }

        model.getCurrentName().observe(this, nameObserver)
    }

    fun saveProfileData() {
        val firstName = inputFirstName.text.toString()
        model.getCurrentName().value = firstName
    }
}

最佳答案

正如@spkink 建议的那样:

替换

fun getCurrentName(): LiveData<String>

fun getCurrentName(): MutableLiveData<String>

错误是因为 setValue(T value) 在 LiveData 中是 protected (所以你不能调用它)而它是 publicMutableLiveData.

关于android - 实时数据。无法分配给 ‘value’ : the setter is protected/*protected and package*/for synthetic extension,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50923273/

相关文章:

java - IP 视频输入流上的运动检测 - Android/Java

java - 致命异常 : java. util.UnknownFormatConversionException 转换 = 'End of String'

android - 无法在 Kotlin (Android Studio) 中实现 Groupie

android - 如何确保 WorkManager 取消我的 Worker?

android - ACTION_MOVE 上的 ImageView 旋转

java - 无法在Android Studio 3.1上生成已签名的APK

android - 从 int 转换回 DateTime 时遇到问题

android - onKeyUp 不处理硬键盘的 Enter

Android 导航错误 : java. lang.IllegalArgumentException : navigation destination com. 示例---此 NavController 未知

android - 如何将架构组件与 MediaBrowserService 一起使用?