简体   繁体   中英

Project on Android Studio still crashing

My application doesn't open activity 2 when I click the button on the SplashScreen (Activity 1) It just crashes without warning or something Activity 1 works perfectly but the activity 2 doesn't show up i think the problem is on the array but i don't have ideia about how fixing it. Please heeelp

Activity2.Java

package com.example.activity1;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class Activity2 extends AppCompatActivity {

private Button respostaA;
private Button respostaB;
private Button respostaC;
private TextView Pergunta;
private TextView Numero;
private String RespostaCorreta;
private int RespostaCorretaContador = 0;
private int quizContador = 1;
ArrayList<ArrayList<String>>quizArray = new ArrayList<>();

String[][] quizData = {
        // {"Pergunta","Correto", "Resposta A", "Resposta B"}
        {"Todos os períodos a seguir referem-se à Era 
Paleozóica,exceto:","Triássico", "Cambriano", 
"Ordoviano"},
        {"Há cerca de 530 milhões de anos ocorreu um aumento repentino da 
diversidade de muitos filos 
de animais. Esse aumento na variedade de animais marca um período 
denominado:", " 
Cambriano","Haloceno", "Permiano"},
        {"A origem da vida é explicada por diferentes teorias. Em uma delas, 
sugere-se que a vida 
surgiu devido à presença de gases na atmosfera que sofreram a ação de 
descargas elétricas e 
radiações, fazendo com que moléculas inorgânicas dessem origem a moléculas 
orgânicas. Essa ideia é 
conhecida como","Evolução  Química","Abiogênese", "Geração Espontânea"},
        {"Sabemos que a maioria dos dinossauros se extinguiu por volta de 
65,5 milhões de anos atrás, 
ou seja, no final do período:"," Cretáceo", "Jurássico", " Triássico"},
        {"A origem da vida sempre foi motivo de muita pesquisa e dúvidas. 
Inicialmente, acreditava-se 
que a vida surgia a partir de matéria inanimada, uma teoria conhecida 
como:","Geração Espontânea", 
"Biogênese", "Evolução química"},
        {"Qual foi a primeira bactéria que utilizou a luz do Sol para 
transformar dióxido de carbono 
e água em glicose e assim liberar o oxigênio para a atmosfera ?", "A) 
Estromatólitos", 
"Estromafólitos", 
" Estrofatólitos"},
        {"Qual foi a extinção que justifica a catástrofe como sendo resultado 
da colisão de um 
asteroide com a Terra e é conhecida pelo desaparecimento dos dinossauros", 
"Extinção K-Pq","Extinção 
Permiana", " Extinção Cambriana"}

};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_2);

    Numero = (TextView)findViewById(R.id.Numero);
    Pergunta = (TextView)findViewById(R.id.Pergunta);
    respostaA = (Button)findViewById(R.id.respostaA);
    respostaB = (Button)findViewById(R.id.respostaB);
    respostaC = (Button)findViewById(R.id.respostaC);

    // Create quizArray from quizData
    for (int i = 0; i < quizData.length; i++) {

        //Prepare array.
        ArrayList<String> tmpArray = new ArrayList<>();
        tmpArray.add(quizData[i][0]); //Pergunta
        tmpArray.add(quizData[i][1]); //Correto
        tmpArray.add(quizData[i][2]); //Opção 2
        tmpArray.add(quizData[i][3]); //Opção 3

        // Add tmpArray to quizArray
        quizArray.add(tmpArray);
    }
    showNextQuiz();
    }
    public void showNextQuiz() {

    //Update the Questão
        Numero.setText("Q" + quizContador);

    //Aleatorizar perguntas
        Random random = new Random();
        int randomNum = random.nextInt(quizArray.size());

        ArrayList<String> quiz = quizArray.get(randomNum);
        Pergunta.setText(quiz.get(0));
        RespostaCorreta = quiz.get(1);

        quiz.remove(0);
        Collections.shuffle(quiz);

        respostaA.setText(quiz.get(1));
        respostaB.setText(quiz.get(2));
        respostaC.setText(quiz.get(3));

        quizArray.remove(randomNum);

    }

   }



Stack Trace
 --------- beginning of crash
2020-06-03 13:17:54.186 3566-3566/com.example.activity1 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.activity1, PID: 3566
java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.example.activity1/com.example.activity1.Activity2}: 
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
 Caused by: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.get(ArrayList.java:411)
    at com.example.activity1.Activity2.showNextQuiz(Activity2.java:81)
    at com.example.activity1.Activity2.onCreate(Activity2.java:61)
    at android.app.Activity.performCreate(Activity.java:6662)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)

It was hard seeing and understanding your naming convention but anyway, the problem is so clearly shown in the stack trace. you have 3 elements left in the quiz and you are accessing the 4th element. The set of three setText methods are probably raising the problem(last one).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM