第二次调用后,在 gridlayout 选项中设置数据不起作用

Setting data in gridlayout options is not working after calling it second time

我正在使用 class 与 ArrayList 合作,我必须将其值放在 gridlayouts 选项中。 第一次在 OnCreate 上运行良好并且 setText 更正了位置 但是在第二次调用 class 之后它崩溃了。 同一个代码怎么能运行一次就崩溃 (我认为错误在最后几行:-> 见后面 classes)

public class playGame extends Fragment {
    View view;
    Button option1Button,option2Button,option3Button,option4Button;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle bundle) {
        view=inflater.inflate(R.layout.fragment_play_game, container, false);
        option1Button=view.findViewById(R.id.option1);
        option2Button=view.findViewById(R.id.option2);
        option3Button=view.findViewById(R.id.option3);
        option4Button=view.findViewById(R.id.option4);
        String gameName=getArguments().getString("Name");
        TextView levelNameTextView=view.findViewById(R.id.levelNameTextView);
        levelNameTextView.setText(gameName);
        Button playAgainButton=view.findViewById(R.id.gameOverTry);
        playAgainButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Navigation.findNavController(view).navigate(R.id.action_playGame_to_gameOver);
            }
        });
        final ProcessGame processGame=new ProcessGame();
        GetAndPutData();
        option1Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                processGame.compareWithCorrect(option1Button.getText().toString());
            }
        });
        option2Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                processGame.compareWithCorrect(option2Button.getText().toString());
            }
        });
        option3Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                processGame.compareWithCorrect(option3Button.getText().toString());
            }
        });
        option4Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                processGame.compareWithCorrect(option4Button.getText().toString());
            }
        });
        return view;
    }
    public class ProcessGame{
        String question,option1,option2,option3,option4,correctAnswer;
        TextView questionBox=view.findViewById(R.id.questionBox);
        List<String> questionlist=new ArrayList<String>();
        public void setValues(String question,String option1,String option2,String option3,String option4,String correctAnswer){
            this.option1=option1;
            this.option2=option2;
            this.option3=option3;
            this.option4=option4;
            this.question=question;
            this.correctAnswer=correctAnswer;
            questionlist.add(0,option1);
            questionlist.add(1,option2);
            questionlist.add(2,option3);
            questionlist.add(3,option4);
            shuffleOption();
            questionBox.setText(question);
        }
        public void shuffleOption(){
            Collections.shuffle(questionlist);
            putOptionsInButton();

        }
        public void putOptionsInButton(){
            option1Button.setText(questionlist.get(0));
            option2Button.setText(questionlist.get(1));
            option3Button.setText(questionlist.get(2));
            option4Button.setText(questionlist.get(3));
        }
        public void compareWithCorrect(String pressedButtonValue){
            TextView feedbackBox=view.findViewById(R.id.feedbackBox);
            if (pressedButtonValue==correctAnswer){
                feedbackBox.setText("Correct :-)");
                GetAndPutData();
            }
            else{
                feedbackBox.setText("Wrong :-(");
                shuffleOption();
            }
        }
    }
    public void GetAndPutData(){
        ProcessGame processGame=new ProcessGame();
        processGame.setValues("1+1=?","2","1","3","4","2");
    }
}

这是我的错误:->

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.get(ArrayList.java:411)
        at com.example.quiz_createandplay.playGame$ProcessGame.putOptionsInButton(playGame.java:117)
        at com.example.quiz_createandplay.playGame$ProcessGame.shuffleOption(playGame.java:113)

当答案正确时,您将调用 getAndPutData() 调用设置值,那是该应用程序运行的时间 fine.but,当答案错误时,您将其发送到调用 putOptionsInButton 的 shuffleOption() () 看到一个空列表,即使答案是错误的,你也必须将 DATA 设置到你的列表中,例如,如果你在 shuffleOption() 中调用 setValues() ,你就不会崩溃。

    public void shuffleOption(){
        Collections.shuffle(questionlist);
        processGame.setValues("1+1=?","2","1","3","4","2");
        putOptionsInButton();

    }