小编The*_*oob的帖子

尝试在空对象引用上调用虚拟方法“void androidx.lifecycle.MutableLiveData.setValue(java.lang.Object)”(Android Kotlin)

抱歉,标题很长,但是,我不确定这个错误在我的代码中的位置,但是,我确实怀疑错误在于 和 的实现liveDataObservation

我正在开发的应用程序是一个 Unscrambler 单词应用程序,用户必须解读片段上显示的字母。到目前为止,我的代码由下面列出的 2 个 Kotlin 类组成:afragment和 aViewModel类。

我目前已将变量分配_currentScrambledWord为 aMutableLiveData<String>()并利用了支持属性ViewModel.kt

private val _currentScrambledWord = MutableLiveData<String>()
val currentScrambledWord: LiveData<String>
    get() = _currentScrambledWord
Run Code Online (Sandbox Code Playgroud)

GameFragment然后我尝试使用下面的代码将观察者附加到。

viewModel.currentScrambledWord.observe(viewLifecycleOwner,
        { newWord -> binding.textViewUnscrambledWord.text = newWord
        })
Run Code Online (Sandbox Code Playgroud)

据我了解,通过减少所需的代码量,LiveData简化了检索数据的过程。ViewModel

这是我在Logcat中发现的错误

Attempt to invoke virtual method 'void androidx.lifecycle.MutableLiveData.setValue(java.lang.Object)' on a null object reference 
Run Code Online (Sandbox Code Playgroud)

logcat中的错误行如下

at com.example.android.unscramble.ui.game.GameViewModel.getNextWord(GameViewModel.kt:57)
at com.example.android.unscramble.ui.game.GameViewModel.<init>(GameViewModel.kt:18)
at com.example.android.unscramble.ui.game.GameFragment.getViewModel(GameFragment.kt:39)
at com.example.android.unscramble.ui.game.GameFragment.onViewCreated(GameFragment.kt:76)
Run Code Online (Sandbox Code Playgroud)

视图模型.kt

class GameViewModel:ViewModel() {

private var wordsList: …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-livedata

3
推荐指数
1
解决办法
2130
查看次数

标签 统计

android ×1

android-livedata ×1

kotlin ×1