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.