android - 为什么在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 也有字符串数组。
解决方案
推荐阅读
- android - 意图的 ANR 广播 { act=android.intent.action.SCREEN_ON flg=0x50200010(有额外内容)}
- r - 用于绘制和保存 igraph 对象的函数在使用 lapply 时会跳过列表元素
- html - CSS ::before 元素不应触发 :hover 父元素的功能
- javascript - Vue iVew 菜单不反映路由器状态,如 router-link
- r - RMarkdown for Word 文档中的交叉引用
- html - 从静态 HTML 访问 Angular 的 CSS 包
- php - 如何检测 foreach 数据库查询中的重复项
- ios - 如何在构造函数中使用边界
- php - 如果 id 在数组中,vuejs 检查复选框
- java - 如何在一行上准确输入五个字符的字符串,然后在每个字符之间输出带有空格的字符串?爪哇