Android Studio - Activity has stopped

  • Antworten:4
  • Bentwortet
Joshua "Joseph" Jones
  • Forum-Beiträge: 26

19.02.2018, 08:58:48 via Website

Hallo liebe androidpit Community!

Wir haben ein Problem mit unserer Quiz App.
Wenn wir die letzte Frage beantwortet haben sollte eine "Result Activity" geöffnet werden.
Das ist leider nicht der Fall.
Es öffnet sich nur kurz und dann kommt die Fehlermeldung "quiz has stopped".

Hier ist der Github Link: https://github.com/dummycoders/androidquizv2
Logcat: https://pastebin.com/raw/UpaGNEf7

Kommentieren
Beste Antwort
Rafael K.
  • Forum-Beiträge: 2.359

19.02.2018, 09:14:02 via Website

Das simpelste wäre eine Methode in der Questions Klasse, die dir die Anzahl zurückliefert.

int size() {
   return mQuestions.length;
}

Dann musst du in deiner updateQuestion Methode prüfen ob der aktuelle Index (int num) darüber liegt.

Hilfreich?
Joshua "Joseph" Jones
Kommentieren
Rafael K.
  • Forum-Beiträge: 2.359

19.02.2018, 09:00:40 via Website

java.lang.ArrayIndexOutOfBoundsException: length=6; index=6
at ga.code.android_quiz_v2.Questions.getQuestions(Questions.java:32)

Du hast irgendwo die Indizes beim Array oder Listen Zugriff nicht korrekt nach oben begrenzt.
Wenn die Größe 6 ist, ist der letzte Index 5 (da Null-basiert).

EDIT:
Hab mir auch grade den Code angesehen. Die Datenstruktur, ist sehr fehleranfällig.
Ich würde mich ein Objekt Question machen, das die Attribute "Frage", "Optionen", und "Antwort" vereint. Wobei die Antwort nur der Index in den Optionen ist, nicht der kopierte Text.
Dann würde ich eine Liste von Question Objekten speichern.
So hast du zumindest die Fehlerquelle eliminiert, dass die Arrays unterschiedlich lang werden.

— geändert am 19.02.2018, 09:06:05

Hilfreich?
Joshua "Joseph" Jones
Kommentieren
Joshua "Joseph" Jones
  • Forum-Beiträge: 26

19.02.2018, 09:06:10 via Website

@Rafael K.

Wir haben nur 6 Fragen, ich denke mal wir bräuchten eine Abbruch-Bedingung, aber da scheitert es ein wenig.
Da bräuchten wir etwas Hilfe.

Hilfreich?
Kommentieren
Beste Antwort
Rafael K.
  • Forum-Beiträge: 2.359

19.02.2018, 09:14:02 via Website

Das simpelste wäre eine Methode in der Questions Klasse, die dir die Anzahl zurückliefert.

int size() {
   return mQuestions.length;
}

Dann musst du in deiner updateQuestion Methode prüfen ob der aktuelle Index (int num) darüber liegt.

Hilfreich?
Joshua "Joseph" Jones
Kommentieren
Joshua "Joseph" Jones
  • Forum-Beiträge: 26

19.02.2018, 09:26:12 via Website

Vielen Dank!

Hilfreich?
Kommentieren