6

Kontynuując zadane pytanie w poniższym linku:Jak mogę przechwytywać zmiany czasu w TimePicker, jeśli używana jest klawiatura "Soft"?

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

mogę rozwiązać ten problem, ale to działa tylko w przypadku korzystania z rzeczywistą klawiaturę. Jeśli używasz miękkiej klawiatury, nie mogę jej uruchomić.

Programuję w wersji 1.6 ramki.

Każda pomoc będzie doceniana.

PS: Fakt, że szukałem wszędzie odpowiedzi i nie mogłem jej znaleźć, mówi mi, że musi to być bardzo proste lub bardzo skomplikowane. Wsparcie?!

Odpowiedz

0

Oto, co zadziałało: Okazało się, że ten problem jest tylko problemem w zależności od urządzenia, z którym współpracujesz. Mam Samsung Moment, więc po przetestowaniu w innych urządzeniach (oczywiście nie wszystkich) i emulatorach dowiedziałem się, że działo się to tylko z moim telefonem.

Poniższy link pomógł mi rozwiązać mój problem. Mam nadzieję, że to pomaga ...

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

N-Joy!

Simmone

1

Mam ten sam problem. Jeśli używam TimePickerDialog, nie ma problemu. Do korzystania timepicker w DialogPreference, to jest najgorszy jaki kiedykolwiek obejście wykonana, idąc w dół hierarchii Widok na 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; 

ten sposób mogę uzyskać dostęp do tekstu bezpośrednio, który został wpisany w - ale nie POWINNY być lepszym sposobem zarządzania wejściami klawiatury ...

+0

Cody ... może być to urządzenie. Sprawdziłem z G1 i działało dobrze, ale działało to inaczej w moim Samsung Moment. Czy sprawdziłeś, czy zachowanie jest takie samo na innych urządzeniach? – monn3t

+0

Nie, nie wiedziałem, wiem tylko, że mój timepicker nie zachowywał się zgodnie z oczekiwaniami na emulatorze. Być może masz rację. W każdym razie, jeśli nie działa poprawnie na wszystkich urządzeniach docelowych, musi istnieć rozwiązanie. Nie można po prostu dołączyć OnTimeSetListener do TimePicker, jak w przypadku TimePickerDialog. Wygląda na to, że OnTimeChangedListener zajmuje się tylko ręcznym wprowadzeniem, jeśli odpowiedni EditText traci skupienie przed kliknięciem przycisku OK. Jeśli nadal jest skupiony po kliknięciu OK, OnTimeChangedListener tego nie zauważy. – cody

+0

@cody - Natknąłem się na ten wątek po uruchomieniu tego problemu. Zaimplementowałem twoje obejście i wygląda na to, że działa idealnie, ale skoro ten wątek jest tak stary, czy znalazłeś lepszy sposób na uzyskanie czasu z TimePicker'a podczas korzystania z miękkiej klawiatury? – dell116

1

Odnosząc się do komentarza z Cody, musisz usunąć fokus z TimePicker, gdy okno dialogowe jest zamknięte.

Można to wykorzystać, gdzie tp jest instancja timepicker:

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

Nie ma związku, ale czy ktokolwiek inny nienawidzi sposobu, w jaki kod jest sformatowany w tych odpowiedziach?Wyrenderowane wyjście zwykle nie wygląda tak, jak w polu edycji ...