2013-08-12 2 views
0

У меня есть три NumberPickers, и я хотел бы определить, когда значение изменилось во всех них. В настоящее время я использую их для чего-то еще, поэтому я знаю, что они работают. Я пытался сделать это как onClickListener при переключении Ид, но идентификатор не работает здесьmultiple OnValueChangedListeners

public class ..... implements OnValueChangeListener { 

// Removed 

NumberPicker np1; 
// Get the id from xml 
np1.setOnValueChangedListener(this); 
NumberPicker np2; 
// Get the id from xml 
np2.setOnValueChangedListener(this); 
NumberPicker np3; 
// Get the id from xml 
np3.setOnValueChangedListener(this); 

@Override 
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
     // TODO Auto-generated method stub 
     Log.i("value changed", "true"); // This IS shown 
     switch (getView().getId()) { // I think this is wrong 

     case R.id.numberPicker1: 

      Log.i("value 1", "true"); // Not shown 
      break; 
     case R.id.numberPicker2s: 

     Log.i("value 2", "true"); // Not shown 
      break; 
     case R.id.numberPicker3: 

      Log.i("value 3", "true"); // Not shown 
      break; 

     } 


    } 

} 

Я мог бы добавить каждый слушатель separatley, но я думаю, что будет грязно.

ответ

0

Вы неоднократно установить слушатель только на первом подборщик номера (np1)

EDIT:

Хорошо, я вижу. Как насчет хранения ссылок на ваши объекты NumberPicker в OnCreate в качестве переменных членов вашей деятельности и просто соответствуют объектам в onValueChanged слушателя следующим образом:

public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
    if(picker == np1) { 
     ... 
    } else if(picker == np2) { 
     ... 
    } ... 
} 

Я думаю, вы не получение идентификатора правильного мнения в фрагменте коды выше :

switch (getView().getId()) { // I think this is wrong 

Вы должны вызвать GetId на сборщика аргумента вместо:

switch(picker.getId()) 
+0

к сожалению, это была моя ошибка при копировании. Я отредактировал вопрос – RiThBo

+0

@RiThBo Ooops Я вижу :-D Я обновил свой ответ – tiguchi

+0

Спасибо! Мне нужен только 'switch (picker.getId()), и он отлично работает. :-) – RiThBo