簡體   English   中英

Android Studio 上的項目仍然崩潰

[英]Project on Android Studio still crashing

當我單擊 SplashScreen(活動 1)上的按鈕時,我的應用程序沒有打開活動 2 它只是在沒有警告的情況下崩潰或者活動 1 工作正常但活動 2 沒有顯示我認為問題出在數組上,但我不知道如何修復它。 請幫忙

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)

很難看到和理解您的命名約定,但無論如何,堆棧跟蹤中清楚地顯示了問題。 您在測驗中剩下 3 個元素,您正在訪問第 4 個元素。 三個 setText 方法的集合可能會引發問題(最后一個)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM