onTimeSet wird under android 4 doppelt ausgeführt

  • 3 Antworten
  • Letztes Antwortdatum
N

newpageart

Neues Mitglied
0
Hallo liebe Forengemeinde,

ich habe einen TimePickerDialog um die Uhrzeit auszuwählen und anschliessend abzuspeichern. Dies hat bis jetzt unter Android 2.3 super funktioniert. Nun habe ich das ganze mal im Emulator mit der Android 4.0.3 getestet und dort wird nun "onTimeSet" doppelt ausgeführt. Mann mir jemand sagen woran das liegt und was ich machen kann, damit es nu einmal ausgeführt wird?

Code:
private void openTimePickerDialog(boolean is24r){
        Calendar calendar = Calendar.getInstance();
        
        TimePickerDialog timePickerDialog = new TimePickerDialog(
                SetReminderActivity.this, 
                onTimeSetListener, 
                calendar.get(Calendar.HOUR_OF_DAY), 
                calendar.get(Calendar.MINUTE), 
                is24r);
        timePickerDialog.setTitle("Set Alarm Time");  
        timePickerDialog.setButton(TimePickerDialog.BUTTON_POSITIVE, "Speichern", timePickerDialog);
        timePickerDialog.show();

    }
    
    OnTimeSetListener onTimeSetListener
    = new OnTimeSetListener(){

        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

            Calendar calNow = Calendar.getInstance();
            Calendar calSet = (Calendar) calNow.clone();

            calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
            calSet.set(Calendar.MINUTE, minute);
            calSet.set(Calendar.SECOND, 0);
            calSet.set(Calendar.MILLISECOND, 0);
            
            if(calSet.compareTo(calNow) <= 0){
                calSet.add(Calendar.DATE, 1);
            }
            Log.v("Survey", "setAlarm: " + calSet.getTime());
            setAlarm(calSet);
        }};

Viele Grüße,
Tom
 
Ich habe diesen Blog-Eintrag gefunden. Habs zwar nur den Anfang gelesen, aber dort steht:

[...] The method onDateSet is called once even if the back key is pressed, and is called twice if ‘Done’ is selected [...]

Es geht zwar um den DatePicker, aber das Problem scheint dasselbe zu sein.
 
Jap ist ein Bug in Android:
https://code.google.com/p/android/issues/detail?id=34860

In einem kommentar ist ganz gut beschrieben was da passiert und warum.
Ist aber noch nicht gefixed.

Ein einfacher Workaround wäre

Code:
    = new OnTimeSetListener(){
        boolean second = false;
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            if (second) {
                second = false;
                return;
                }
            second = true;
            Calendar calNow = Calendar.getInstance();
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: newpageart
Danke!!!
Das Workaround funktioniert super.

Viele Grüße,
Tom
 

Ähnliche Themen

ThKildau
Antworten
0
Aufrufe
28
ThKildau
ThKildau
asconsulting
Antworten
5
Aufrufe
176
LonelyGremlin
LonelyGremlin
Katharina1985
Antworten
9
Aufrufe
623
Anz
Anz
M
Antworten
21
Aufrufe
1.807
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
1.132
migi01
migi01
Zurück
Oben Unten