0

私はアンドロイドが初めてです..

ラジオボタンの問題に直面しています..私を導いてください.

私はラジオグループを持っています。初めてチェックされていない状態で表示されます。ユーザーが最初にオプションを選択したとき、私は何の問題もありませんでした。それまでの間、次のボタンがあります。ユーザーが次のボタンをクリックすると、2 番目の質問のオプションがオフになります。ユーザーが次の質問に対して次の質問をする方法と同様です。その後、4 つまたは 5 つの質問まで問題なく動作し、次の質問に進むとエラーがスローされます。私を案内してください....何が間違っていますか?

よろしくお願いします。

    btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) { 
                switch(btn_practicerg.getCheckedRadioButtonId()){
                case R.id.RB1:
                    if (btn_practice1.isChecked()){
                        btn_practice2.setChecked(false);
                        btn_practice3.setChecked(false);
                        btn_practice4.setChecked(false);
                    }
                    break;
                case R.id.RB2:
                    if (btn_practice2.isChecked()){
                        btn_practice1.setChecked(false);
                        btn_practice3.setChecked(false);
                        btn_practice4.setChecked(false);
                    }
                    break;
                case R.id.RB3:
                    if (btn_practice3.isChecked()){
                        btn_practice1.setChecked(false);
                        btn_practice2.setChecked(false);
                        btn_practice4.setChecked(false);
                    }
                    break;
                case R.id.RB4:
                    if (btn_practice4.isChecked()){
                        btn_practice1.setChecked(false);
                        btn_practice2.setChecked(false);
                        btn_practice3.setChecked(false);
                    }
                    break;
                }
                RadioButton radioButton = (RadioButton)group. findViewById(checkedId);
                String temp = radioButton.getText().toString();
                crrtans=new ArrayList<String>(new ArrayList<String>(crrtans));
                if (temp.equals(crrtans.get(l))){
                TextView txtRadio = (TextView) findViewById(R.id.rdtxt); 
                txtRadio.setText("" + radioButton.getText() + " IS CORRECT");
                       }else{
                TextView txtRadio = (TextView) findViewById(R.id.rdtxt); 
            txtRadio.setText("" + radioButton.getText() + "is INCORRECT");
                     }
     });
    Button nextBtn = (Button) findViewById(R.id.nxt_btn);
    nextBtn.setOnClickListener(new Button.OnClickListener(){
    public void onClick(View v){ 
         TextView txtRadio = (TextView) findViewById(R.id.rdtxt); 
         txtRadio.setText("Nothing is picked");
         txtRadio.setTextColor(Color.parseColor("#CCEEFF"));
          if (j == ques1.size() -1) {
                showAlert1();
            }
          else{ 
            ++j;
            ++num;
            TextView txtque = (TextView) findViewById(R.id.que_txt); 
            txtque.setText("Q" + num +ques1.get(j));
            btn_practice1.setChecked(false);
             btn_practice2.setChecked(false);
             btn_practice3.setChecked(false);
             btn_practice4.setChecked(false);
            ++k;
            btn_practice1.setText(answ1.get((k*4)+0));
            btn_practice2.setText(answ1.get((k*4)+1));
            btn_practice3.setText(answ1.get((k*4)+2));
            btn_practice4.setText(answ1.get((k*4)+3));
          }
         // btn_practice1.setChecked(false);
          //btn_practice2.setChecked(false);
         // btn_practice3.setChecked(false);
         // btn_practice4.setChecked(false);
          btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) { 
                    int selectedId = group.getCheckedRadioButtonId();
                    RadioButton radioButton = (RadioButton)group. findViewById(checkedId);
                    String temp = radioButton.getText().toString();
                    switch(btn_practicerg.getCheckedRadioButtonId()){
                    case R.id.RB1:
                        if (btn_practice1.isChecked()){
                            btn_practice2.setChecked(false);
                            btn_practice3.setChecked(false);
                            btn_practice4.setChecked(false);
                        }
                        break;
                    case R.id.RB2:
                        if (btn_practice2.isChecked()){
                            btn_practice1.setChecked(false);
                            btn_practice3.setChecked(false);
                            btn_practice4.setChecked(false);
                        }
                        break;
                    case R.id.RB3:
                        if (btn_practice3.isChecked()){
                            btn_practice1.setChecked(false);
                            btn_practice2.setChecked(false);
                            btn_practice4.setChecked(false);
                        }
                        break;
                    case R.id.RB4:
                        if (btn_practice4.isChecked()){
                            btn_practice1.setChecked(false);
                            btn_practice2.setChecked(false);
                            btn_practice3.setChecked(false);
                        }
                        break;
                    }
                    l++;
        if (temp.equals(crrtans.get(l))){
        TextView txtRadio = (TextView) findViewById(R.id.rdtxt); // line 407 
        txtRadio.setText("" + radioButton.getText() + " IS CORRECT");
                    }else{
            TextView txtRadio = (TextView) findViewById(R.id.rdtxt); 
        txtRadio.setText("" + radioButton.getText() + " IS INCORRECT");
                   }      
         });

ログキャット

       E/AndroidRuntime(597): FATAL EXCEPTION: main
       E/AndroidRuntime(597): java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3
       E/AndroidRuntime(597):   at 
     java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
       E/AndroidRuntime(597):   at java.util.ArrayList.get(ArrayList.java:311)
       E/AndroidRuntime(597):   at   
     com.example.finalpractice.Question$LoadQuestions$2$1.onCheckedChanged(Question.java:407)
       E/AndroidRuntime(597):   at 
     android.widget.RadioGroup.setCheckedId(RadioGroup.java:172)
       E/AndroidRuntime(597):   at android.widget.RadioGroup.access$600(RadioGroup.java:52)
       E/AndroidRuntime(597):   at 
     android.widget.RadioGroup$CheckedStateTracker.onCheckedChanged(RadioGroup.java:342)
       E/AndroidRuntime(597):   at 
     android.widget.CompoundButton.setChecked(CompoundButton.java:127)
       E/AndroidRuntime(597):   at 
     android.widget.CompoundButton.toggle(CompoundButton.java:86)
       E/AndroidRuntime(597):   at android.widget.RadioButton.toggle(RadioButton.java:72)
       E/AndroidRuntime(597):   at 
     android.widget.CompoundButton.performClick(CompoundButton.java:98)
       E/AndroidRuntime(597):   at android.view.View$PerformClick.run(View.java:9080)
       E/AndroidRuntime(597):   at android.os.Handler.handleCallback(Handler.java:587)
       E/AndroidRuntime(597):   at android.os.Handler.dispatchMessage(Handler.java:92)
       E/AndroidRuntime(597):   at android.os.Looper.loop(Looper.java:123)
       E/AndroidRuntime(597):   at android.app.ActivityThread.main(ActivityThread.java:3683)
       E/AndroidRuntime(597):   at java.lang.reflect.Method.invokeNative(Native Method)
       E/AndroidRuntime(597):   at java.lang.reflect.Method.invoke(Method.java:507)
       E/AndroidRuntime(597):   at 
     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
       E/AndroidRuntime(597):   at 
     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
       E/AndroidRuntime(597):   at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

0

多分あなたはIndexArrayOfBoundsこの行にいます

answ1.get((k*4)+0)

最初にあなたが増加kし、使用と配列がから始まるから0です。

于 2013-02-14T07:31:45.950 に答える