0

我目前正在构建一个应用程序,并且我添加了 Dagger Hilt 以定义单个类来访问数据。注入似乎工作正常,但我无法在我使用的数据类中存储值。

我首先创建了一个 Singleton,代码使用它从数据结构中设置/获取值。

@Singleton
class CarListMemorySource @Inject constructor() : CarListInterface {

    private var extendedCarList: ExtendedCarList? = null

    override fun setListOfVehicles(listOfVehicles: List<item>) 
    {
        extendedCarList?.listOfVehicles = listOfVehicles
    }

}

当我调用setListOfVehicles包含listOfVehicules10 项但

数据结构ExtendedCarList定义如下:

data class ExtendedCarList(
    var listOfVehicles: List<item>
)

使用 Hilt 传入的单例,例如在下面的 viewModel 中:

@HiltViewModel
class HomeScreenViewModel @Inject constructor(
    private val carList: CarListMemorySource
): ViewModel() {

    fun getList() {
        --> DO SOMETHING TO Get A ListA
        carList.setListOfVehicles(ListA)
    }
}

在活动中,使用 viewModel,我只是这样做:

@AndroidEntryPoint
class HomeScreenActivity: AppCompatActivity() {

   private val viewModel: HomeScreenViewModel by viewModels()

....
    viewModel.getList()
....

}

知道为什么以及如何解决它吗?

谢谢

4

1 回答 1

2

你永远不会初始化extendedCarList.

extendedCarList?.listOfVehicles = listOfVehicles

上面的行与

if (extendedCarList != null) extendedCarList.listOfVehicles = listOfVehicles

但它永远不会通过空值检查。

我认为只是改变

private var extendedCarList: ExtendedCarList? = null

private val extendedCarList = ExtendedCarList()

可能会解决它

于 2021-12-02T08:24:11.560 回答