Android 为什么我会出错;e:错误:无法访问数据源";,如果我使用ViewModelFactory?

Android 为什么我会出错;e:错误:无法访问数据源";,如果我使用ViewModelFactory?,android,android-viewmodel,android-mvvm,android-paging,Android,Android Viewmodel,Android Mvvm,Android Paging,我正在尝试使用ANDROID分页库在回收器视图中实现分页列表。我还使用ViewModel类。但我发现了一个奇怪的错误 在我的viewmodel中,我有一个属性activeDataSource,我想在其中保存最后一个datasource对象(通过DataSourceFactory创建),并在从存储库收到列表已更新的通知时调用datasource方法invalidate 但是我得到了一个关于起源的错误,我不知道: e:错误:无法访问数据源 值得注意的是,如果我不使用自己的ViewModelFacto

我正在尝试使用ANDROID分页库在回收器视图中实现分页列表。我还使用ViewModel类。但我发现了一个奇怪的错误

在我的viewmodel中,我有一个属性activeDataSource,我想在其中保存最后一个datasource对象(通过DataSourceFactory创建),并在从存储库收到列表已更新的通知时调用datasource方法invalidate

但是我得到了一个关于起源的错误,我不知道: e:错误:无法访问数据源

值得注意的是,如果我不使用自己的ViewModelFactory创建新的viewmodel对象,则不会出现此错误

是什么导致了这个错误

我的viewmodel类:

    class ArticleDetailsViewModel @Inject constructor(
    private val repository: NewsRepository
    ) : ViewModel(), LifecycleObserver {

    private var activeDataSource: DataSource<Int, Article>? = null

    val articlesLiveList: LiveData<PagedList<Article>>
        get() {
            val dataSourceFactory = ArticleDataSourceFactory(repository)

            val config = PagedList.Config.Builder()
                .setEnablePlaceholders(false)
                .setPageSize(5)
                .build()

            Log.e("asd", "=== Create list live data ===")
            return LivePagedListBuilder(dataSourceFactory, config)
                .setFetchExecutor(Executors.newSingleThreadExecutor())
                .build()
        }

    fun onResetClick() {
        repository.onIvalidate()
    }

    fun setDataSource(data: DataSource<Int, Article>) {
        activeDataSource = data
    }
}

您在哪里传递对
DaggerViewModelFactory
的引用?我正在activity onCreate方法中注入DaggerViewModelFactory。使用factory,我创建了所有需要的viewmodel,您在哪里传递对
DaggerViewModelFactory的引用。使用factory,我创建了所需的所有viewmodel
 class DaggerViewModelFactory @Inject constructor(private val viewModelsMap: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>) :
    ViewModelProvider.Factory {

    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        val creator = viewModelsMap[modelClass] ?: viewModelsMap.asIterable().firstOrNull {
            modelClass.isAssignableFrom(it.key)
        }?.value ?: throw IllegalArgumentException("unknown model class $modelClass")
        return try {
            creator.get() as T
        } catch (e: Exception) {
            throw RuntimeException(e)
        }
    }

}
@NewsScope
@Module
interface NewsViewModelModule {

    @Binds
    @IntoMap
    @ViewModelKey(ArticleDetailsViewModel::class)
    fun testViewModel(viewModel: ArticleDetailsViewModel): ViewModel
}