gridlayoutオプションでのデータの設定は、2回目の呼び出し後に機能しません

AradhyaGopalネパール

私はArrayListその値をgridlayoutsオプションに入れなければならないクラス使用作業していました。初回OnCreateは問題setTextなく動作し、場所を修正しましたが、クラスを呼び出した後、2回目クラッシュしました。同じコードが1回動作し、次回クラッシュする方法(エラーは最後の行にあると思います:->バッククラスから参照)

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)
ezaldeen sahb

答えが正しければ、設定値を呼び出すgetAndPutData()を呼び出し、そのアプリは正常に動作します。しかし、答えが間違っている場合は、nullリストを表示するputOptionsInButton()を呼び出すshuffleOption()に送信します。 、たとえば、shuffleOption()内でsetValues()を呼び出した場合、クラッシュが発生しないなど、答えが間違っていても、DATAをリストに設定する必要があります。

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

    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スクリプトは、シーンがリロードされた後もVector2値を保持します。Awake()またはStart()関数での新しいX、Y値の設定は、2回目のロード後に機能しません

分類Dev

自分自身を呼び出すオプションの完了ハンドラーを使用して反復し、2回目は完了しません

分類Dev

setIntervalは2回目の呼び出し後に停止しません

分類Dev

JavaScriptのfadeOut関数は2回目の呼び出しでは機能しません

分類Dev

Scanfは、2回目の反復後にループ内のフォークで機能しません

分類Dev

DatePickerのsetMinDate(...)は、2回目に呼び出されたときに機能しません

分類Dev

first()オペランドは、関数内での2回目の呼び出し後に公開されません

分類Dev

アプリケーションは、2回目の起動時に空白の画面を表示します(onDestroyが呼び出された後)

分類Dev

$ .deferred()チェーンの最初のajax呼び出しはそこに到達しませんが、ボタンの2回目のクリックは正常に機能します

分類Dev

関数は2回目の呼び出しでログオンします

分類Dev

値レシーバーを持つ関数への関数ポインターであるGolangは、2回目に呼び出されたときに、変更されたレシーバーでその関数を呼び出しません

分類Dev

2回目の検証では機能しません

分類Dev

3回目の呼び出しの後、関数は完全に機能します[Google Charts]

分類Dev

Sails.js / Waterline .add()および.remove()は、2回目の呼び出しでのみ機能します

分類Dev

2回目のajax呼び出しの後jqueryが機能しない

分類Dev

webviewのビデオは2回目の実行では機能しません

分類Dev

React Redux mapStateToPropsは、2回目の呼び出しでデータをロードします

分類Dev

ajax 2回目の呼び出し:関数は関数エラーではありません

分類Dev

javascript-関数は2回目の呼び出しでのみ機能します

分類Dev

AJAXはcodeigniterでの2回目のcsrfトークンの問題では機能しません

分類Dev

初期化後にオプションを設定すると、datetimepickerのdisabledTimeIntervalsが機能しませんでした

分類Dev

カスタムイベントは2回目の呼び出しでnullになりました

分類Dev

ボタンは、リロード後の2回目のクリックでのみ機能します

分類Dev

Vue.jsは設定データの後にオプションを設定できません

分類Dev

Angularjsのデータクリックは2回目は機能しません...どうやって?

分類Dev

2回目のクリック後にラジオボタンの値を動的に設定することはできません

分類Dev

インタースティシャル2回目の呼び出し方法

分類Dev

JavaScriptボタンは2回目のクリックでは機能しません

分類Dev

ng-clickは、ng-hideインタラクションで2回目は機能しません

Related 関連記事

  1. 1

    スクリプトは、シーンがリロードされた後もVector2値を保持します。Awake()またはStart()関数での新しいX、Y値の設定は、2回目のロード後に機能しません

  2. 2

    自分自身を呼び出すオプションの完了ハンドラーを使用して反復し、2回目は完了しません

  3. 3

    setIntervalは2回目の呼び出し後に停止しません

  4. 4

    JavaScriptのfadeOut関数は2回目の呼び出しでは機能しません

  5. 5

    Scanfは、2回目の反復後にループ内のフォークで機能しません

  6. 6

    DatePickerのsetMinDate(...)は、2回目に呼び出されたときに機能しません

  7. 7

    first()オペランドは、関数内での2回目の呼び出し後に公開されません

  8. 8

    アプリケーションは、2回目の起動時に空白の画面を表示します(onDestroyが呼び出された後)

  9. 9

    $ .deferred()チェーンの最初のajax呼び出しはそこに到達しませんが、ボタンの2回目のクリックは正常に機能します

  10. 10

    関数は2回目の呼び出しでログオンします

  11. 11

    値レシーバーを持つ関数への関数ポインターであるGolangは、2回目に呼び出されたときに、変更されたレシーバーでその関数を呼び出しません

  12. 12

    2回目の検証では機能しません

  13. 13

    3回目の呼び出しの後、関数は完全に機能します[Google Charts]

  14. 14

    Sails.js / Waterline .add()および.remove()は、2回目の呼び出しでのみ機能します

  15. 15

    2回目のajax呼び出しの後jqueryが機能しない

  16. 16

    webviewのビデオは2回目の実行では機能しません

  17. 17

    React Redux mapStateToPropsは、2回目の呼び出しでデータをロードします

  18. 18

    ajax 2回目の呼び出し:関数は関数エラーではありません

  19. 19

    javascript-関数は2回目の呼び出しでのみ機能します

  20. 20

    AJAXはcodeigniterでの2回目のcsrfトークンの問題では機能しません

  21. 21

    初期化後にオプションを設定すると、datetimepickerのdisabledTimeIntervalsが機能しませんでした

  22. 22

    カスタムイベントは2回目の呼び出しでnullになりました

  23. 23

    ボタンは、リロード後の2回目のクリックでのみ機能します

  24. 24

    Vue.jsは設定データの後にオプションを設定できません

  25. 25

    Angularjsのデータクリックは2回目は機能しません...どうやって?

  26. 26

    2回目のクリック後にラジオボタンの値を動的に設定することはできません

  27. 27

    インタースティシャル2回目の呼び出し方法

  28. 28

    JavaScriptボタンは2回目のクリックでは機能しません

  29. 29

    ng-clickは、ng-hideインタラクションで2回目は機能しません

ホットタグ

アーカイブ