LiveData中的致命异常' dispatchingValue'方法:没有虚方法iteratorWithAdditions()

时间:2017-11-01 14:24:23

标签: android setvalue android-livedata

我有一个viewModel的视图,它可以观察我的LiveData。我从Repository(从Room或WebAPI获取数据)获取数据。 我已经实现了一个NetworkBoundResource抽象类,所以我可以管理 以更清洁的方式加载数据。 MediatorLiveData对象在此类中使用:

private final MediatorLiveData<Resource<ResultType>> result = new MediatorLiveData<>();

崩溃发生在我的构造函数的第一行:

@MainThread
public NetworkBoundResource() {

    result.setValue(Resource.<ResultType>loading(null));

    final LiveData<ResultType> dbSource = loadFromDb();

    result.addSource(dbSource, new Observer<ResultType>() {
        @Override
        public void onChanged(@Nullable ResultType newData) {
            result.removeSource(dbSource);
            if(shouldFetch(newData))
            {
                fetchFromNetwork(dbSource);
            } else {
                result.setValue(Resource.success(newData));
            }
        }
    });
}

以下是错误消息:

java.lang.NoSuchMethodError: No virtual method iteratorWithAdditions()Landroid/arch/core/internal/SafeIterableMap$ListIterator; in class Landroid/arch/core/internal/SafeIterableMap; or its super classes (declaration of 'android.arch.core.internal.SafeIterableMap' appears in /data/app/com.example.smostofi.upswing-XxPvhI837wneIYVTOrU2Dw==/split_lib_dependencies_apk.apk:classes25.dex)
                                                                            at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:145)
                                                                            at android.arch.lifecycle.LiveData.setValue(LiveData.java:293)
                                                                            at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
                                                                            at com.example.smostofi.upswing.data.Util.NetworkBoundResource.<init>(NetworkBoundResource.java:44)

第一次在这里问一个问题,希望我提供了足够的信息! 提前谢谢!

2 个答案:

答案 0 :(得分:3)

这不是重复依赖问题,只是从

更改生命周期版本
compile 'android.arch.lifecycle:extensions:1.0.0-alpha4'

compile 'android.arch.lifecycle:extensions:1.0.0-alpha9'

答案 1 :(得分:0)

您必须在Gradle中添加相同的依赖项

我有一个相同的问题。原因是,我在Gradle中添加了两次Appcompact库,如下所示:

implementation 'com.android.support:appcompat-v7:26.1.0'
compile rootProject.ext.supportLibAppCompat

删除一个,问题得到解决。

请检查您的Gradle是否也一样。希望它有所帮助:)