![](/img/trans.png)
[英]java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
[英]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
仅用于ArrayList
或Array
这意味着如果我们有一个带有x
索引的ArrayList
并且我们调用的索引大于x
,则会引发此错误!
那么问题是什么?
问题是:您有一个ArrayList
,您调用的不仅仅是ArrayList
索引!
你怎么解决?
在 android studio 中运行你的程序,当这个异常出现时,点击 excpetion 行...android studio 将转到有错误的当前行,所以你可以在那里看到你的ArrayList
并检查索引。
还有一件事,我不是说上面的代码是正确的,也许是,也许不是! 但我确信在调用此行之前,调用了另一行(您的ArrayList
代码行),这个问题是针对您的ArrayList
代码行。
所以你必须先修复这个错误,然后去下一行......
祝你好运
尝试从主线程调用您的函数 - 似乎已经为我修复了它。 我认为问题是在主线程之外迭代视图层次结构,然后一些主线程调用者以某种方式修改视图层次结构,偶尔在您进行迭代的同时。
如果您持有主线程,则在您迭代它时无法修改层次结构,因此您不会遇到此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.