我们的应用程序有一个使用 RecyclerView 构建的 listView,并且可以在不同的用例上添加、删除、移动、更改项目,并且我使用默认动画
Android 中有 1000 个与 ChildHelper 类相关的崩溃,导致应用程序崩溃的代码如下,可在https://android.googlesource.com/platform/frameworks/support/+/5031b30/v7/recyclerview/src上找到/android/support/v7/widget/ChildHelper.java#352
void unhide(View view) {
final int offset = mCallback.indexOfChild(view);
if (offset < 0) {
throw new IllegalArgumentException("view is not a child, cannot hide " + view);
}
if (!mBucket.get(offset)) {
throw new RuntimeException("trying to unhide a view that was not hidden" + view);
}
mBucket.clear(offset);
unhideViewInternal(view);
}
Run Code Online (Sandbox Code Playgroud)
可能导致这两个错误的用例是什么以及我们如何避免这些错误?
这是两种情况的崩溃日志。
选择未隐藏的视图持有者情况下的崩溃日志。
Fatal Exception: java.lang.RuntimeException: trying to unhide a view that was not hiddenandroid.widget.FrameLayout{dd0c169 V.E...... ......ID 0,54-680,234}
at android.support.v7.widget.ChildHelper.unhide(ChildHelper.java:355)
at android.support.v7.widget.RecyclerView$Recycler.getScrapOrHiddenOrCachedHolderForPosition(RecyclerView.java:6124) …Run Code Online (Sandbox Code Playgroud)