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

M
Antworten
21
Aufrufe
1.360
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
967
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.006
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
790
mkuz24
M
A
Antworten
5
Aufrufe
695
swa00
swa00
Zurück
Oben Unten