简体   繁体   English

Android Studio 上的项目仍然崩溃

[英]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.当我单击 SplashScreen(活动 1)上的按钮时,我的应用程序没有打开活动 2 它只是在没有警告的情况下崩溃或者活动 1 工作正常但活动 2 没有显示我认为问题出在数组上,但我不知道如何修复它。 Please heeelp请帮忙

Activity2.Java 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.您在测验中剩下 3 个元素,您正在访问第 4 个元素。 The set of three setText methods are probably raising the problem(last one).三个 setText 方法的集合可能会引发问题(最后一个)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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