2012-07-02 2 views
0

Я пытаюсь реализовать метод цветового ПОЛУЧИТЬ для cwac цвета смесителя (https://github.com/commonsguy/cwac-colormixer), но каждый раз, когда этот код работает, я получаю NullPointerException:Как использовать метод getColor от ColorMixer от cwac?

int color = 1; 

public void openColor(){ 
ColorMixer mixer = (ColorMixer)findViewById(R.id.mixer); 
    if (color!=1){ 
    mixer.setColor(color); 
    } 
    color = mixer.getColor(); 
} 

color = mixer.getColor(); является линией, которая выходит из строя.

+0

Вы, скорее всего, не ищите ' ColorMixer' в нужном месте (или ваш макет не имеет элемента «ColorMixer» с идентификатором «R.id.mixer»). – Luksprog

+0

Спасибо, luksprog - оказалось, что он рушился, потому что я пытался запустить метод openColor во всплывающем окне, и мне нужно было не использовать отдельный метод, а вместо этого использовать имя моего всплывающего окна (см. http://stackoverflow.com/questions/8595427/android-popup-and-button-to-dismiss-doesnt-work). Я добавлю это как ответ, как только смогу (такие люди, как я, которые не могут ответить любые вопросы не могут публиковать ответ в течение 8 часов) – jcw

ответ

1

Я раньше не использовал этот компонент Commonsware, но, глядя на source code, все, что вам нужно сделать, это настроить прослушиватель/обратный вызов. Этот механизм позволит вам получать уведомления о любых изменениях в выборе цвета.

Во-первых, ваш класс реализовать следующий слушатель интерфейс:

public interface OnColorChangedListener { 
    public void onColorChange(int argb); 
} 

Затем установите слушателя на ColorMixer с помощью:

public void setOnColorChangedListener(OnColorChangedListener listener) { 
    this.listener=listener; 
} 

Если вы сделаете все это рядный, это будет выглядеть примерно так это:

mixer.setOnColorChangeListener(new ColorMixer.OnColorChangeListener() { 
    @Override public void onColorChange(int argb) { 
     //... get the color here; e.g. 
     color = argb; 
    } 
}); 
+0

Извините за то, что потратил впустую свое время - нашел ответ, просто подождите 8 часов, прежде чем ответить на мой вопрос – jcw

0

Спасибо, luksprog - оказалось, что он рушился, потому что я пытался для запуска метода openColor во всплывающем окне, и мне нужно было не использовать отдельный метод и вместо этого называть имя моего всплывающего окна (см. Android: popUp and button to dismiss doesnt work)

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