繁体   English   中英

java.lang.IndexOutOfBoundsException:索引:2,大小:0

[英]java.lang.IndexOutOfBoundsException: Index: 2, Size: 0

当我从视图中绘制画布时,偶尔会发生此错误

  val view: View = this.activity.getWindow().getDecorView().getRootView()

        val bitmap = Bitmap.createBitmap(
            view.width,
            view.height,
            Bitmap.Config.ARGB_8888
        ) // Bitmap()


        val canvas = Canvas(bitmap)
        view.draw(canvas) // trace brings me here

这是日志的其余部分

  java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
        at java.util.ArrayList.get(ArrayList.java:437)
        at android.view.ViewGroup.getAndVerifyPreorderedView(ViewGroup.java:3624)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4110)
        at android.view.View.draw(View.java:20075)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
        at android.view.View.draw(View.java:20075)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
        at android.view.View.draw(View.java:20075)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
        at android.view.View.draw(View.java:20075)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
        at android.view.View.draw(View.java:20075)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4333)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112)
        at android.view.View.draw(View.java:20210)
        at com.android.internal.policy.DecorView.draw(DecorView.java:790)

这种错误(异常)不是来自你在那里写的代码。 这种错误java.lang.IndexOutOfBoundsException: Index: 2, Size: 0仅用于ArrayListArray这意味着如果我们有一个带有x索引的ArrayList并且我们调用的索引大于x ,则会引发此错误!

那么问题是什么?

问题是:您有一个ArrayList ,您调用的不仅仅是ArrayList索引!

你怎么解决?

在 android studio 中运行你的程序,当这个异常出现时,点击 excpetion 行...android studio 将转到有错误的当前行,所以你可以在那里看到你的ArrayList并检查索引。

还有一件事,我不是说上面的代码是正确的,也许是,也许不是! 但我确信在调用此行之前,调用了另一行(您的ArrayList代码行),这个问题是针对您的ArrayList代码行。

所以你必须先修复这个错误,然后去下一行......

祝你好运

尝试从主线程调用您的函数 - 似乎已经为我修复了它。 我认为问题是在主线程之外迭代视图层次结构,然后一些主线程调用者以某种方式修改视图层次结构,偶尔在您进行迭代的同时。

如果您持有主线程,则在您迭代它时无法修改层次结构,因此您不会遇到此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM