小编San*_*shN的帖子

ChildHelper.java 第 352 和 355 行崩溃

我们的应用程序有一个使用 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)

crash android android-recyclerview recyclerview-layout

7
推荐指数
0
解决办法
1949
查看次数