Я считаю, что это потому, что он хранит ссылку на ваш ArrayList
, а не копию текущего «состояния» списка на каждой итерации цикла.
Например, вы сначала вставляете ссылку на свой ArrayList
, когда он содержит 1 элемент. Затем вы вставляете ссылку на ваш ArrayList
, когда он содержит 2 элемента. Оба являются просто ссылками, поэтому, когда вы действительно переходите к следующему Activity
, он копирует полный текст ArrayList
.
Чтобы это исправить, вы можете делать локальную копию ArrayList
каждый раз, когда делаете цикл.
ArrayList<String> sections = new ArrayList<String>();
for(int i=1; i<=last; i++) {
sections.clear();
for(j = 0; j < size; j++){
sections.add(someText);
}
// Creating a new local copy of the current list.
ArrayList<String> newList = newArrayList<>(sections);
// Inserting the local copy instead.
ourIntent.putStringArrayListExtra("sections_"+i, newList);
}
То, что вы видите, является примером маршрутизации URL. Вместо указания на конкретный файл (например, page.php) сервер использует таблицу маршрутизации или конфигурацию, которая направляет запрос обработчику, который фактически отображает html (или что-либо еще, в зависимости от возвращенного типа mime). Если вы заметили, StackOverflow использует тот же механизм.
Ключом является поле Content-Type
заголовка ответа HTTP. Примерно так:
HTTP 200 OK
Content-Type: video/flv
Content-Length: 102345
DATA-DATA-DATA-DATA-DATA-DATA-....
См. Также:
Content-Disposition: attachment; filename=genome.jpeg;
modification-date="Wed, 12 Feb 1997 16:29:51 -0500";
Подробнее: http://en.wikipedia.org/wiki/MIME
Нормальным поведением веб-сервера является сопоставление запрошенного пути URI с файлом где-то в корневом каталоге документа. Таким образом, http://example.com/foo/bar
просто отображается на /path/do/document/root/foo/bar
. Кроме того, веб-сервер должен знать, как обрабатывать файл. Это часто делается расширением имени файла. Таким образом, файлы с расширением имени файла .php
обрабатываются интерпретатором PHP.
Теперь, помимо этого нормального поведения, большинство веб-серверов имеют функции, позволяющие изменять как отображение (т. Е. перезапись URL-адреса ), так и способ обработки файла без расширения имени файла.
В случае веб-сервера Apache первый может быть выполнен с помощью mod_rewrite :
RewriteEngine on
RewriteRule ^/watch$ /watch.php
, а второй может быть выполнен с помощью mod_mime :
<File watch>
ForceType application/x-httpd-php
</File>
(Хорошо, на самом деле это не функция mod_mime, а функция core .)