当前位置: 首页 > 知识库问答 >
问题:

我不明白MVVM上的“实例尚未初始化”

司寇琨
2023-03-14
    fun getInstance(): NicePlaceRepository {
        if (instance == null) {
            instance = NicePlaceRepository()
        }
        Log.d("TAG","11111")
        return instance
    }

ViewModel

private lateinit var mNicePlaces :MutableLiveData<List<NicePlace>>
lateinit var mRepository : NicePlaceRepository

fun init(){
    if(mNicePlaces!=null) return
    mRepository =  NicePlaceRepository().getInstance()
    mNicePlaces = mRepository.getNicePlaces()
}

fun getNicePlaces():LiveData<List<NicePlace>>{
    return mNicePlaces
}

储存库

private val dataSet = ArrayList<NicePlace>()
companion object {
    lateinit var instance: NicePlaceRepository
}

fun getInstance(): NicePlaceRepository {
    if (instance == null) {
        instance = NicePlaceRepository()
    }
    Log.d("TAG","11111")
    return instance
}
fun getNicePlaces():MutableLiveData<List<NicePlace>>{
    setNicePlaces()
   var data = MutableLiveData<List<NicePlace>>()
   data.value = dataSet
   return data
}
private fun setNicePlaces(){
    for(i:Int in 0..5){
        dataSet.add(NicePlace("111", "111"))
    }
}

共有1个答案

东门航
2023-03-14

由于您已经声明了lateinit var instance:niceplacerepository,因此该实例不能为null。您的检查if(instance==null)将不会通过,并且instance将不会被启动。

解决的一种方法是检查lateinit实例是否初始化,而不是null检查。或使实例为空:

改变这一点,

lateinit var instance: NicePlaceRepository
 var instance: NicePlaceRepository? = null
fun getInstance(): NicePlaceRepository {
    if (instance == null) {
        instance = NicePlaceRepository()
    }
    Log.d("TAG","11111")
    return instance!!
}
 类似资料:
  • 问题内容: 我正在用Java编程。我已经在每种方法中添加了注释,以解释它们应该做什么(根据分配)。我将我所知道的添加到了存根(这是我在研究学校提供的javadoc之后创建的)。我的问题不是几个函数,我知道testWord和setWord中有错误,但是我自己解决。我的问题是关于这条线的: 这行是由学校提供的,因此我必须假设它是正确的,我在任何地方都找不到关于常量字段值INITIAL的任何文档,因此,

  • 本文向大家介绍tensorflow 初始化未初始化的变量实例,包括了tensorflow 初始化未初始化的变量实例的使用技巧和注意事项,需要的朋友参考一下 今日在Stack Overflow上看到一个问如何只初始化未初始化的变量,有人提供了一个函数,特地粘贴过来共大家品鉴: 通过tf.global_variables()返回一个全局变量的列表global_vars, 然后以python列表解析式的

  • Json服务器数据显示,在使用retrofit2和rxjava2的android中,当参数传递给inteface时,会出现错误。 接口

  • 问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事

  • 我不知道这是怎么回事 主要活动 我遇到了这个问题 2022-03-18 09:18:27.393 13874-13874/com。实例githubuser2 E/AndroidRuntime:致命异常:主进程:com。实例githubuser2,PID:13874 java。lang.RuntimeException:无法启动活动组件信息{com.example.githubuser2/com.e

  • 我有一个类,我注入到ViewModel ViewModel工厂,当在活动中的onCreate方法中初始化视图模型时,它说传递的值没有初始化。 下面是我的代码 我对Kotlin很陌生,所以尝试过调试,但在这个问题上卡住了。 这是Mainactive代码: 我的ViewModelFactory: 我的班级回购: 这是我收到的错误: