Mein Setup ist wie folgt: In meinem onCreate initialisiere ich eine ArrayList wie folgt:
%Vor% und die AsyncTask ruft den Text über HttpURLConnection()
ab, analysiert den JSON mit JsonReader
und fügt jede Textzeile der TextListe hinzu (all dies geschieht innerhalb der doInBackground
der AsyncTask. Ich habe einen benutzerdefinierten Adapter, der die Zeichenfolgen in textList
.
Ich habe auch eine Funktion gotoNextSection()
, die ausgelöst wird, wenn der Benutzer zur nächsten Seite navigieren möchte, wo ich etwas mache wie:
Da ich jedoch nicht möchte, dass der veraltete Text von der vorherigen Seite auf dem Bildschirm angezeigt wird, mache ich Folgendes in meiner AsyncTask:
%Vor%, so dass die ArrayList leer und bereit ist, erneut zu füllen. All dies funktioniert in allen anderen unterstützten Android-Versionen, aber wenn ich es in einem Marshmallow-Emulator ausprobiert habe, führt gotoNextSection()
zu einer IndexOutOfBoundsException. Dies tritt auf, nachdem der neue Inhalt zur frisch gelöschten arrayList hinzugefügt wurde (verifiziert) via Logging), also glaube ich nicht, dass es eine Race Condition ist. Beachten Sie, dass das Löschen der Liste die Ausnahme nicht verhindert, und da dies die einzige in der Aktivität verwendete ArrayList ist, bin ich sicher, dass .clear()
das Problem ist. Ich habe versucht, es aufzulösen und neu zu initialisieren, bevor ich die AsyncTask auch als eine Alternative starte, ohne Erfolg. Auch dies geschieht ausschließlich unter Android 6.0. Gedanken?
BEARBEITEN:
Hier ist der Logcat Stacktrace. Beachten Sie, dass die Größe des Index, auf den zugegriffen wird und wo der Code auftritt, irrelevant ist, da ich versucht habe, die ArrayList nach der Ausführung der Aufgabe in gotoNextSection
zu protokollieren. habe versucht, im Log zuzugreifen.
Tags und Links java android android-asynctask android-6.0-marshmallow arraylist