Как я могу получить значение виджета NumberPicker?

Я ищу выбор числа, подобный тем, которые используются в элементах управления датой на Android, и нашел этот вопрос: выбор часов/минут для таймера обратного отсчета Android

Следуя этому примеру, я могу получить нужные мне элементы управления — ура! Проблема в том, что я не понимаю, как получить значение, которое выбирает пользователь? Обычно я бы установил прослушиватель изменений и был бы счастлив, но как мне создать класс, реализующий внутренний интерфейс com.android.internal.widget.NumberPicker$OnChangedListener? Есть ли другой способ получить текущий выбор?


person Ian Leslie    schedule 26.11.2010    source источник
comment
Не используйте частные API. Мы не будем ограничивать вас в этом, но ваш код, скорее всего, сломается в будущих версиях платформы или даже на устройствах с той же версией платформы, где производитель что-то настроил.   -  person adamp    schedule 26.11.2010
comment
Хороший вопрос - поскольку я просто пишу тестовый проект, мне не о чем беспокоиться. OTOH, возможно, мне просто следует использовать другой способ ввода значений.   -  person Ian Leslie    schedule 26.11.2010


Ответы (1)


Проверьте исходный код... Вам нужен слушатель? getCurrent должен дать вам значение. С отражением это будет что-то вроде:

Method m = c.getMethod("getCurrent");
int value = (Integer) m.invoke(o, foo);

РЕДАКТИРОВАТЬ: вы можете реализовать интерфейс, который вы получили через отражение, с помощью java.lang.reflect.Proxy, см. этот вопрос здесь.

person cristis    schedule 26.11.2010
comment
Спасибо - я нашел веб-сайт с информацией javadoc для этого класса, и у него не было метода getCurrent. Я вижу по вашей ссылке, что это так. Я попробую ваше предложение, когда вернусь домой. - person Ian Leslie; 26.11.2010
comment
Работал как шарм. Для справки, я просто играю в это и не буду запускать такой код в производство, поскольку adamp говорит, что нехорошо использовать такие частные API. - person Ian Leslie; 27.11.2010