Для простоты я подытожу свою проблему следующим образом:
Пакет отправляется из всплывающей активности в основную активность, затем он отправляется из основной активности во фрагмент. Во фрагменте this.getArguments()
работает превосходно и дает пакету всю необходимую нам информацию. Теперь, когда я использую
for(int i=1; i<=bundleSize; i++){
byte[] bytes = bundle.getByteArray("byteArray" + i);
//convert bytes to bitmap, etc.
}
Это вызывает ошибку stackoverflow. (невозможно использовать метод 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.
}
Для получения дополнительной информации, для(или while) записано в onCreateView()
, поэтому от него зависит UI фрагмента. Насколько я знаю, переполнение стека вызвано накоплением слишком большого количества информации (что здесь не так) или бесконечными циклами (опять-таки, bundleSize равен 200, так что я думаю, что это не должно быть так). Мне интересно, в чем здесь проблема. Также в комплекте есть String Arrays.