Это на самом деле довольно просто. Вы инициализируете переменные rockRB, paperRB, scissorRB и результат при инициализации класса. В то время, когда вы вызываете findViewById (...), макет еще не был загружен, и, следовательно, представление с указанным идентификатором не найдено. Поэтому функция findViewById возвращает ноль, чтобы указать на это. Когда вы позже попытаетесь использовать сохраненный идентификатор (который является нулевым), вы получите исключение нулевого указателя, и, следовательно, все приложение аварийно завершится.
Чтобы решить вашу проблему, переместите инициализацию переменных с помощью findViewById (...) в функцию onCreate ниже инструкции setContentView, но перед инструкциями setOnClickListener.
Как это:
открытый класс RockPaperScissorsActivity расширяет Activity, реализует Button.OnClickListener {
/ ** Вызывается при первом создании действия. * /
private RadioButton rockRB;
private RadioButton paperRB;
private RadioButton scissorsRB;
private TextView result;
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rockRB = (RadioButton)findViewById(R.id.radioRock);
paperRB = (RadioButton)findViewById(R.id.radioPaper);
scissorsRB = (RadioButton)findViewById(R.id.radioScissors);
result = (RadioButton)findViewById(R.id.result);
rockRB.setOnClickListener(this);
paperRB.setOnClickListener(this);
scissorsRB.setOnClickListener(this);
}
и так далее ...