6

Продолжая вопрос, указанный в следующей ссылке:Как я могу захватить, когда изменяется время в TimePicker, если используется «Мягкая» клавиатура?

How can I capture when time changes in a TimePicker if the keyboard is being used?

я мог бы решить эту проблему, но она работает только при использовании фактической клавиатуры. Если вы используете мягкую клавиатуру, я не могу заставить ее работать.

Я программирую версию версии 1.6.

Любая помощь будет очень признательна.

PS: Тот факт, что я искал всюду для ответа и не смог найти его, говорит мне, что это должно быть так просто или очень сложно. Помогите?!

ответ

0

Это то, что сработало для меня: Я выяснил, что эта проблема является проблемой только в зависимости от устройства, с которым вы работаете. У меня есть Samsung Moment, поэтому после тестирования на других устройствах (очевидно, не во всех) и эмуляторов я узнал, что это происходит только с моим телефоном.

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

http://blog.xiaad.com/2010/03/android-datepicker-years-before-2000.html

N-Joy!

Simmone

1

У меня такая же проблема. Если я использую TimePickerDialog, проблем нет. Для использования TimePicker в DialogPreference, это наихудший обходной путь я когда-либо делал, спускаясь просмотр иерархии TimePicker:

ViewGroup v = (ViewGroup) timePicker.getChildAt(0); 
ViewGroup numberPicker1 = (ViewGroup) v.getChildAt(0); 
ViewGroup numberPicker2 = (ViewGroup) v.getChildAt(1); 

String hours = ((EditText) numberPicker1.getChildAt(1)).getText().toString(); 
String mins = ((EditText) numberPicker2.getChildAt(1)).getText().toString(); 

String selectedTime = hours+":"+mins; 

Таким образом, я мог получить доступ к тексту непосредственно, который был набран в - но там СЛЕДУЕТ быть лучшим способом управления вводом клавиатуры ...

+0

Cody ... может быть это устройство. Я проверил с G1, и он работал нормально, но в моем Samsung Moment он работал по-другому. Вы проверяли, одинаково ли поведение на других устройствах? – monn3t

+0

Нет, я этого не знал, я знаю только, что мой таймер не вел себя так, как ожидалось, на эмуляторе. Возможно, вы правы. В любом случае, если он не работает должным образом на всех целевых устройствах, должно быть решение. Вы не можете просто привязать OnTimeSetListener к TimePicker, например, для TimePickerDialog. Кажется, OnTimeChangedListener только заботится о ручном вводе, если соответствующий EditText теряет фокус перед нажатием кнопки OK. Если он все еще имеет фокус при нажатии OK, OnTimeChangedListener этого не замечает. – cody

+0

@cody - Только что наткнулся на эту тему, столкнувшись с этой проблемой. Я реализовал ваше обходное решение и, похоже, работает отлично, но поскольку этот поток настолько стар, вы сталкиваетесь с лучшим способом получить время от TimePicker при использовании мягкой клавиатуры? – dell116

1

Ссылаясь на комментарий Коди, вам нужно удалить фокус с помощью TimePicker, когда диалог закрыт.

Вы можете использовать это, где ф является экземпляр TimePicker:

public void onDialogClosed(boolean positiveResult) { 
    tp.clearFocus(); 
+0

Несвязанный, но кто-то еще не любит, как код отформатирован в этих ответах?Полученный вывод обычно выглядит не так, как в поле редактирования ...