LiveData 'dispatchingValue' 方法中的致命异常:没有虚拟方法 iteratorWithAdditions()
FATAL EXCEPTION in LiveData 'dispatchingValue' method: No virtual method iteratorWithAdditions()
我有一个带有观察我的 LiveData 的 viewModel 的视图。我从存储库获取数据(从 Room 或 WebAPI 获取数据)。
我已经实现了 NetworkBoundResource 抽象 class 所以我可以管理
以更清洁的方式加载数据。 class:
中使用了 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)
第一次在这里提问,希望我提供了足够的信息!
提前致谢!
您必须在 Gradle.
中多次添加 相同的依赖项
我有同样的问题。原因是,我在 Gradle 中添加了两次 Appcompact 库,如下所示:
implementation 'com.android.support:appcompat-v7:26.1.0'
compile rootProject.ext.supportLibAppCompat
通过删除一个,问题得到解决。
请检查您的 Gradle 是否相同。希望对您有所帮助:)
这不是重复依赖问题,只需更改您的生命周期版本
compile 'android.arch.lifecycle:extensions:1.0.0-alpha4'
到
compile 'android.arch.lifecycle:extensions:1.0.0-alpha9'
我有一个带有观察我的 LiveData 的 viewModel 的视图。我从存储库获取数据(从 Room 或 WebAPI 获取数据)。 我已经实现了 NetworkBoundResource 抽象 class 所以我可以管理 以更清洁的方式加载数据。 class:
中使用了 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)
第一次在这里提问,希望我提供了足够的信息! 提前致谢!
您必须在 Gradle.
中多次添加 相同的依赖项我有同样的问题。原因是,我在 Gradle 中添加了两次 Appcompact 库,如下所示:
implementation 'com.android.support:appcompat-v7:26.1.0'
compile rootProject.ext.supportLibAppCompat
通过删除一个,问题得到解决。
请检查您的 Gradle 是否相同。希望对您有所帮助:)
这不是重复依赖问题,只需更改您的生命周期版本
compile 'android.arch.lifecycle:extensions:1.0.0-alpha4'
到
compile 'android.arch.lifecycle:extensions:1.0.0-alpha9'