Исключение для класса Android с помощью группового виджета?

Создав небольшое приложение для викторины и у вас возникли некоторые проблемы с кодом, он работал над предыдущей версией, но получил удаление во время новой установки окон, когда я попытаюсь открыть активность для викторины, я все время получаю непредвиденную ошибку и журнал говорит после нескольких строк

Java.lang.classexception: android.widget.Radio Group

код для действия выглядит так:

package com.example.quizzards;
import java.io.FileNotFoundException;
import java.util.Arrays;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;


@SuppressLint("NewApi")
public class GamesActivity extends Activity {

 boolean rightWrong;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_games);
 try {
 @SuppressWarnings("unused")
 Questions questions = new Questions(getApplicationContext());
 } catch (FileNotFoundException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 update();

 Button answer = (Button) findViewById(R.id.AnswerButton);

 answer.setOnClickListener(new OnClickListener()
 {
 public void onClick(View V)
 {
 RadioGroup allOptions = (RadioGroup) findViewById(R.id.questions);
 int toCheck = allOptions.getCheckedRadioButtonId();
 if (toCheck == -1) {
 Toast.makeText(GamesActivity.this, "Please select an option.",
 Toast.LENGTH_SHORT).show();
 } else {
 RadioButton selected = (RadioButton) findViewById(allOptions
 .getCheckedRadioButtonId());
 rightWrong = Questions.checkAnswer(selected.getText()
 .toString());
 if (rightWrong == true) {
 Toast.makeText(GamesActivity.this, "Right!!!",
 Toast.LENGTH_SHORT).show();
 Questions.addPoint();
 update();
 } else {
 Questions.incorrectTry();
 int remainingTries = Questions.getRemainingTries();
 if (remainingTries == 0) {
 // Toast.makeText(MainActivity.this,
 // "Your final score is " + Questions.getScore() + ".",
 // Toast.LENGTH_SHORT).show();
 Intent i = new Intent(GamesActivity.this,
 ResultsActivity.class);
 startActivity(i);
 } else {
 Toast.makeText(
 GamesActivity.this,
 "Wrong!!! " + remainingTries
 + " tries left.",
 Toast.LENGTH_SHORT).show();
 }
 }
 allOptions.clearCheck();
 }
 }
 });

 }

 @Override
 public void onBackPressed() {
 Intent i = new Intent(GamesActivity.this, PlayActivity.class);
 startActivity(i);
 }


 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 ***************().inflate(R.menu.games, menu);
 return true;
 }

 public void update()
 {
 if (Questions.finished()) {
 Intent i = new Intent(GamesActivity.this,
 ResultsActivity.class);
 startActivity(i);
 } else {
 String[] aQuestion = Questions.getNextQuestion();
 String[] temp = Arrays.copyOfRange(aQuestion, 1, aQuestion.length);
 for (int i = 0; i < temp.length; i++) {
 int r = (int) (Math.random() * (i + 1));
 String swap = temp[r];
 temp[r] = temp[i];
 temp[i] = swap;
 }
 TextView textViewQuestion = (TextView) findViewById(R.id.questions);
 textViewQuestion.setText(aQuestion[0]);
 TextView textViewOption1 = (TextView) findViewById(R.id.option1);
 textViewOption1.setText(temp[0]);
 TextView textViewOption2 = (TextView) findViewById(R.id.option2);
 textViewOption2.setText(temp[1]);
 TextView textViewOption3 = (TextView) findViewById(R.id.option3);
 textViewOption3.setText(temp[2]);
 TextView textViewOption4 = (TextView) findViewById(R.id.option4);
 textViewOption4.setText(temp[3]);
 TextView runningTotal = (TextView) findViewById(R.id.runningTotal);
 runningTotal.setText("Total: " + Questions.getScore());
 }
 }
}

Файл XML содержит группу радиостанций и несколько переключателей, когда я пытаюсь запустить код без каких-либо переключателей и комментировать код, отлично работает

1 ответ

  1. Убедитесь, что все ваши RadioButtons и RadioGroup имеют разные идентификаторы в файле макета.
  2. Еще одна небольшая оптимизация - искать RadioButtons внутри RadioGroup следующим образом.

    RadioButton selected = (RadioButton) allOptions.findViewById(
     allOptions.getCheckedRadioButtonId());

licensed under cc by-sa 3.0 with attribution.