#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. Таким образом, вы можете вызывать ее только на / в этих объектах.