Почему получение данных из пакета приложения в цикле вызывает ошибку stackoverflow - PullRequest
1 голос
/ 02 ноября 2019

Для простоты я подытожу свою проблему следующим образом:

Пакет отправляется из всплывающей активности в основную активность, затем он отправляется из основной активности во фрагмент. Во фрагменте 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...