首页 > 解决方案 > 为什么在for循环中从应用程序包获取数据会导致stackoverflow错误

问题描述

为了简单起见,我将我的问题总结如下:

一个捆绑包从启动活动发送到主活动,然后它将从主活动发送到片段。在片段中,this.getArguments()效果很好,它为捆绑包提供了我们需要的任何信息。现在当我使用

for(int i=1; i<=bundleSize; i++){
   byte[]  bytes = bundle.getByteArray("byteArray" + i);
//convert bytes to bitmap, etc.
}

它会导致堆栈溢出错误。(无法使用方法 android.os.bundle 字符串)。事实上,它甚至没有进入循环!它只是从中跳转(除非 bundleSize 变为 1,在这种情况下不会抛出错误)。注意没有问题

byte[]  bytes = bundle.getByteArray("byteArray" + 1); //or an arbitrary integer

更有趣的是,这个也没有问题(我现在正在使用它):

while (i++<=bundleSize) {
    byte[]  bytes = bundle.getByteArray("byteArray" + i);
    //convert bytes to bitmap, etc.
}

更多信息,for(或while)被写入onCreateView(),所以片段的UI依赖于它。据我所知,stackoverflow 是由堆叠太多信息(这里不是这种情况)或无限循环(bundleSize 再次为 200,所以我认为也不应该是这种情况)引起的。我想知道这里有什么问题。bundle 也有字符串数组。

标签: androidstack-overflow

解决方案


推荐阅读