2017-01-27 18 views
1

Я пытался настроить кнопки и другие элементы с пользовательскими цветами. Я новичок в java, и я пытался научиться правильно использовать контекст. Я провел некоторое исследование, и я все еще не могу найти решение.Передача контекста в getColor, Android Studio

Ошибка монитора андроида - исключение нулевого указателя, и это строка кода, с которой она связана.

int buttonBackground = ContextCompat.getColor(this, R.color.buttonBackgrounds); 

Я объявил эту переменную внутри моего класса, а затем дальше в методе, я написал:

percussionButton.setBackgroundColor(buttonBackground); 
instrumentButton.setBackgroundResource(android.R.drawable.btn_default); 

Я думал, что эти два могут быть противоречивыми, но это все, что я могу думать выкл.

Приносим извинения, если раньше был дан ответ, я не смог получить ответ от всего, что я нашел до сих пор.

вещи, которые я пробовал до:

int buttonBackground = ContextCompat.getColor(getBaseContext(), R.color.buttonBackgrounds); 

int buttonBackground = ContextCompat.getColor(getApplicationContext(), R.color.buttonBackgrounds); 

ответ

1

Прочитайте ответы на понимание разницы между методами контекста геттерных here.
Возможно, это вызывает исключение, вы вызываете getBaseContext(), когда он возвращает null, отсюда исключение нулевого указателя.
Если вы хотите использовать контекст активности (внутри класса активности), вы можете передать (или YourActivityClass.this, где YourActivityClass - это имя вашей деятельности) в качестве аргумента Context. Таким образом, строка с исключением должна быть примерно такой:

int buttonBackground = ContextCompat.getColor(this, R.color.buttonBackgrounds); 
+0

Да, я пробовал, что у него все еще есть такая же ошибка. Спасибо за ссылку, я попробую прочитать это, чтобы узнать больше. – Mopork

+0

Подождите, я только что прочитал ваш вопрос и заметил что-то: если вы хотите использовать значение переменной 'buttonBackground', вы должны установить его значение из метода' onCreate' вашей деятельности, когда активность (с ее материал, контекст и т. д.). – nvi9

+0

Замечательно! он работает сейчас, спасибо. Я не понимал, что нужно иметь его внутри метода onCreate. – Mopork

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

  • Нет связанных вопросов^_^