抱歉,标题很长,但是,我不确定这个错误在我的代码中的位置,但是,我确实怀疑错误在于 和 的实现liveData中Observation。
我正在开发的应用程序是一个 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)