Ссылка на кнопку Android?

#android

#Android

Вопрос:

Итак, у меня возникли некоторые проблемы с методом, который я собираюсь использовать для изменения цвета кнопки на основе числа, полученного из игрового движка (так что, если бы он вернул 0, он был бы красным, 1 изменил бы его на синий, 2 изменил бы его на желтый), но я продолжаю получать ошибки при попытке ссылаться на кнопку.

Я ссылаюсь на кнопки таким образом:

 Button x0y0 = (Button) findViewById(R.id.x0y0);
  

Но я получаю сообщение об ошибке, eclipse не распознает

Любая помощь о том, как я могу вставить кнопки в эту программу и заставить их менять цвет в зависимости от того, что движок возвращает к ней?

Комментарии:

1. метод findViewById(int) не определен для типа ButtonColorUpdate (в моем классе этот метод находится в)

2. Я предполагаю, что это не ошибка времени выполнения, а ошибка компиляции?

3. Нужно будет посмотреть ваш код. Насколько я могу судить, вы пытались использовать findViewById из класса, который его не поддерживает. Опубликуйте свой код

4. вам нужно вызвать это в вашем Activity или иметь ссылку на Activity в классе ButtonColorUpdate и назвать его reference.findViewById(…)

5. Смехотворно! «Я получаю сообщение об ошибке». Да, я тоже ненавижу ошибки. Но я думаю, что может быть причина в том, что при возникновении ошибок они делают больше, чем просто говорят «Ошибка»., не так ли? Разве вы не можете представить, что, возможно, просто иногда ошибка может быть полезна для определения того, в чем проблема, и как ее устранить?

Ответ №1:

Ваш класс ButtonColorUpdate придется расширить Activity , чтобы получить доступ к findViewById() . Однако более вероятно, что вы захотите передать фактическую кнопку своему ButtonColorUpdate классу, поскольку это звучит как вспомогательный класс, а не класс пользовательского интерфейса.

Вы также могли бы передать свою активность конструктору ButtonColorUpdate класса, а затем использовать это для получения идентификатора кнопки.

Ответ №2:

findViewById() является общедоступным методом либо класса Activity, либо класса View. Таким образом, вы можете вызывать ее только на / в этих объектах.