2015-11-10 3 views
0

Я создал программно, 5 радиогрупп с 4 переключателями каждый. Каждый радиокнопка представляет собой ответ на вопрос. Я хочу, чтобы кто-то нажал кнопку, если установлен правильный ответ, чтобы установить цвет этого текста в зеленый цвет. То, что я пытаюсь сделать, заключается в том, чтобы знать во втором OnClickListener, какой переключатель был отмечен, и если он правильный, чтобы сделать текст зеленым. Итак, с этим кодом, когда я нажимаю кнопку, ничего не происходит. Если я удалю условие if (CorrectAnswer == 1), и я нажму кнопку, я получу эту ошибку: Attempt to invoke virtual method 'void android.widget.RadioButton.setTextColor(int)' on a null object reference. Есть идеи? Вот мой код:Как установить цвет текста текста при нажатии кнопки на Java?

boolean isChecked; 
RadioButton checkedRadioButton; 
RadioGroup radioButtonGroup; 
int CorrectAnswer; 

radioGroup[i].addView(answer[j]); 

answer[j].setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     checkedRadioButton = ((RadioButton) v); 
     int CorrectAnswer = Integer.parseInt(checkedRadioButton.getTag().toString()); 
     isChecked = true; 
     if (isChecked) { 
      if (checkedRadioButton.isChecked() & CorrectAnswer == 1) { 
       score++; 
       isChecked = false; 
      } 
     } 
    } 
}); 

finishButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     for (int i = 0; i < radioGroup.length; i++) { 
      int radioGroupId = radioGroup[i].getId(); 
      radioButtonGroup = (RadioGroup) findViewById(radioGroupId); 
      int checkedRadioButtonId = radioButtonGroup.getCheckedRadioButtonId(); 
      checkedRadioButton = (RadioButton) findViewById(checkedRadioButtonId); 
      if (CorrectAnswer == 1) { 
       checkedRadioButton.setTextColor(Color.GREEN); 
      } 
      for (int j = 0; j < answer.length; j++) { 
       radioGroup[i].getChildAt(j).setEnabled(false); 
      } 
     } 
    } 
}); 

Спасибо!

+0

Я бы сказал, '' checkedRadioButton' является null'. – Fildor

+0

Хорошо, но что я могу сделать, чтобы исправить это? –

+0

Проверьте наличие null ... но это только предотвратит исключение. Вам нужно выяснить, почему идентификатор, возвращаемый getCheckedRadioButtonId, не найден findByViewId. – Fildor

ответ

0

Сделайте это, чтобы избежать вызова методов по нулевой ссылке.

if (CorrectAnswer == 1 && checkedRadioButton != null) 

EDIT:

Изменить заявление к этому

if (checkedRadioButton != null && Integer.parseInt(checkedRadioButton.getTag().toString()) == 1) 
+0

Достаточно честный, но мой текст по-прежнему черный, а не зеленый, когда я нажимаю кнопку. –

+0

@ AlexM. Где вы устанавливаете CorrectAnswer? –

+0

В первом 'OnClickListener', как видите, у меня есть' int CorrectAnswer = Integer.parseInt (checkedRadioButton.getTag(). ToString()); ' –

Смежные вопросы