使用部分应用程序时我的应用程序关闭了吗?

我是应用程序开发的初学者,但有一些我无法解决的问题。

第一个是这样的:runtime_flags中设置的未知位:0x8000

第二个就是这个:无法获取文件列表ch.maxbi.haveadrink

第三个就是这个:getFolderSize():Exception_1 = java.lang.NullPointerException:尝试获取空数组的长度

所有这些问题并不重要,但这对我来说非常重要:

最后和最坏的一次是因为我每次使用应用程序的一部分时都会关闭应用程序:2020年5月9日00:26:22.464 16871-16871 / ch.maxbi.haveadrink E / AndroidRuntime:致命异常:main     处理:ch.maxbi.haveadrink,PID:16871     java.lang.IndexOutOfBoundsException:索引:20,大小:20

那是问题部分的主要代码:

package ch.maxbi.haveadrink.category;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


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

import ch.maxbi.haveadrink.popup.PopupBasique;
import ch.maxbi.haveadrink.popup.PopupFaux;
import ch.maxbi.haveadrink.popup.PopupVrai;
import ch.maxbi.haveadrink.database.DatabaseAlcool;
import ch.maxbi.haveadrink.itemcategory.ItemAlcool;
import ch.maxbi.haveadrink.R;
import ch.maxbi.haveadrink.jeu.Jeu1;


public class CategoryAlcool extends AppCompatActivity {

    private CategoryAlcool activity;
    Button back_category_page;
    Button mTrueButton;
    Button mFalseButton;
    TextView mQuestions;

    ItemAlcool questionsalcool;
    int questionsLenght;

    ArrayList<DatabaseAlcool> questionsList;

    int currentQuestion = 0;


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

        this.activity = this;

        this.back_category_page = (Button) findViewById(R.id.back_category_page);

        back_category_page.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent back_category_page = new Intent(getApplicationContext(), Jeu1.class);
                startActivity(back_category_page);
                finish();

            }
        });


        mQuestions = (TextView) findViewById(R.id.text_true_false);
        mTrueButton = (Button) findViewById(R.id.btn_true);
        mFalseButton = (Button) findViewById(R.id.btn_false);

        questionsalcool = new ItemAlcool();
        questionsLenght = questionsalcool.questionsalcool.length;
        questionsList = new ArrayList<>();

        for (int i = 0; i < questionsLenght; i++){
            questionsList.add(new DatabaseAlcool(questionsalcool.getQuestionsalcool(i), questionsalcool.getAnswersalcool(i)));
        }

        Collections.shuffle(questionsList);
        setQuestion(currentQuestion);

        mTrueButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (checkQuestions(currentQuestion)){
                    currentQuestion++;
                    if (currentQuestion < questionsLenght){
                        setQuestion(currentQuestion);

                        final PopupVrai popupVrai = new PopupVrai(activity);
                        popupVrai.setTitle("Bonne réponse !");
                        popupVrai.setSubtitle("Tu peux laisser ton verre tranquille, ou pas ;)");
                        popupVrai.getOkButton().setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                popupVrai.dismiss();
                            }
                        });
                        popupVrai.build();

                    }else {
                        endGame();
                    }
                } else {

                    final PopupFaux popupFaux = new PopupFaux(activity);
                    popupFaux.setTitle("Mauvaise réponse...");
                    popupFaux.setSubtitle("Santé !");
                    popupFaux.getOkButton().setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            popupFaux.dismiss();
                        }
                    });
                    popupFaux.build();

                    currentQuestion++;
                    setQuestion(currentQuestion);
                }

            }
        });

        mFalseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (!checkQuestions(currentQuestion)){
                    currentQuestion++;
                    if (currentQuestion < questionsLenght){
                        setQuestion(currentQuestion);

                        final PopupVrai popupVrai = new PopupVrai(activity);
                        popupVrai.setTitle("Bonne réponse !");
                        popupVrai.setSubtitle("Tu peux laisser ton verre tranquille, ou pas ;)");
                        popupVrai.getOkButton().setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                popupVrai.dismiss();
                            }
                        });
                        popupVrai.build();

                    }else {
                        endGame();
                    }
                } else {

                    final PopupFaux popupFaux = new PopupFaux(activity);
                    popupFaux.setTitle("Mauvaise réponse...");
                    popupFaux.setSubtitle("Santé !");
                    popupFaux.getOkButton().setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            popupFaux.dismiss();
                        }
                    });
                    popupFaux.build();

                    currentQuestion++;
                    setQuestion(currentQuestion);
                }

            }
        });

    }

    private void setQuestion(int number){
        mQuestions.setText(questionsList.get(number).getQuestionsalcool());
    }

    private boolean checkQuestions(int number){
        String answer = questionsList.get(number).getAnswersalcool();
        return answer.equals("true");
    }

    private void endGame(){

        currentQuestion = 0;

        final PopupBasique popupBasique = new PopupBasique(activity);
        popupBasique.setTitle("Vous avez parcouru toutes les questions.");
        popupBasique.setSubtitle("Continuez ou allez voir les autres catégories :)");
        popupBasique.getOkButton().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupBasique.dismiss();
            }
        });
        popupBasique.build();

    }

}

这是我有字符串的代码:


package ch.maxbi.haveadrink.itemcategory;

public class ItemAlcool  {


    public String[] questionsalcool = {
            "Les hommes supportent mieux l'alcool que les femmes.",
            "L'alcool réchauffe.",
            "L'alcool coupe la soif et désaltère.",
            "L'alcool s'élimine plus vite si on fait de l'exercice.",
            "L'alcool donne des forces.",
            "L'alcool est moins dangereux s'il est dilué dans l'eau.",
            "L'alcool développe les réflexes.",
            "L'alcool fait grossir.",
            "N'être jamais ivre est bien la preuve que l'on tient bien l'alcool.",
            "Boire une bière ou du bon vin, ce n'est pas boire de l'alcool.",
            "L'alcool est une drogue.",
            "Manger après avoir consommé de l'alcool réduirait sa vitesse de passage dans le sang.",
            "Le Café, l’aspirine ou boire de l’eau ou prendre une douche froide permet d’accélérer l’élimination de l’alcool et d’atténuer les effets.",
            "Je peux prendre le volant si je m’arrête de boire 1h avant.",
            "Les hommes et les jeunes sont les premières victimes de l’alcool au volant.",
            "L'alcool augmente la libido et rend plus puissant sexuellement.",
            "Deux verres par jour, c’est bon pour la santé.",
            "Les femmes ont moins de problèmes avec l’alcool que les hommes.",
            "Les jeunes boivent plus qu’avant.",
            "L'homme retrouvé avec le plus haut taux d'alcool avait 13,74 grammes par litre de sang "
    };

    public String[] answersalcool = {
            "true",
            "false",
            "false",
            "false",
            "false",
            "false",
            "false",
            "true",
            "false",
            "false",
            "true",
            "false",
            "false",
            "false",
            "true",
            "false",
            "false",
            "false",
            "false",
            "true"
    };


    public String getQuestionsalcool (int number){
        return questionsalcool[number];
    }

    public String getAnswersalcool (int number){
        return answersalcool[number];
    }


}

这是最后的代码:

package ch.maxbi.haveadrink.database;

public class DatabaseAlcool {

    private String questionsalcool, answersalcool;

    public DatabaseAlcool(String questionsalcool, String answersalcool){

        this.questionsalcool = questionsalcool;
        this.answersalcool = answersalcool;

    }

    public String getQuestionsalcool() {
        return questionsalcool;
    }

    public String getAnswersalcool() {
        return answersalcool;
    }

}

我有十个这样的代码,因为我想做相同的代码,但针对不同的类别,当我阅读每个句子时,每个类别都会使我的应用程序关闭。

我希望有人为我提供解决方案,因为我进行了很多搜索但没有结果。