2015-05-06 4 views
2

Я пытаюсь извлечь выбранное время из своего виджета TimePicker, однако, когда я использую методы getCurrentHour() и getCurrentMinute(), он сохраняет текущее время, а не тот, который я выбрал.Android Timepicker problem

`

общественный класс TimerClockActivity расширяет активность {

private Calendar calendar; 
private AlarmManager alarmManager; 
private PendingIntent pendingIntent; 
private TimePicker timePickerOn; 
private TimePicker timePickerOff; 
private ToggleButton tbCircuitOn; 
private ToggleButton tbCircuitOff; 
private static AlarmActivity alarmActivity; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_timer_clock); 

calendar = calendar.getInstance(); 

    timePickerOn = (TimePicker) findViewById(R.id.timePickerOn); 
    timePickerOff = (TimePicker) findViewById(R.id.timePickerOff); 
    tbCircuitOn = (ToggleButton) findViewById(R.id.tbCircuitOn); 
    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

    tbCircuitOn.setOnClickListener(new ClickListener()); 


} 


private class ClickListener implements View.OnClickListener { 
    @Override 
    public void onClick(View v) { 

     if (v.getId() == R.id.tbCircuitOn) { 
      if (tbCircuitOn.isChecked()) { 
       // turn alarm on 



       timePickerOn.clearFocus(); 

       Log.d("Hour", String.valueOf(timePickerOn.getCurrentHour())); 
       Log.d("Min", String.valueOf(timePickerOn.getCurrentMinute())); 



       calendar.set(Calendar.HOUR_OF_DAY, timePickerOn.getCurrentHour()); 
       calendar.set(Calendar.MINUTE, timePickerOn.getCurrentMinute()); 

       Log.d("The Time", calendar.toString()); 
       Log.d("Hour", String.valueOf(timePickerOn.getCurrentHour())); 
       Log.d("Min", String.valueOf(timePickerOn.getCurrentMinute())); 


       Intent myIntent = new Intent(TimerClockActivity.this, AlarmHelper.class); 
       pendingIntent = PendingIntent.getBroadcast(TimerClockActivity.this, 0, myIntent,0); 

       AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 



      } else { 
       calendar.clear(); 
      } 

     } 


    } 
} 

}

`

И отобрав другое время для тех, регистрируемых LogCat показывает

05-06 16:18:49.282 25999-25999/com.me.raspiapp D/﹕ Surface destroy: ANDROID_NATIVE_WINDOW_MAGIC 05-06 16:18:54.142 25999-25999/com.me.raspiapp D/Hour﹕ 16 05-06 16:18:54.142 25999-25999/com.adamgelston.raspiapp D/Min﹕ 18 05-06 16:18:54.142 25999-25999/com.adamgelston.raspiapp D/The Time﹕ java.util.GregorianCalendar[time=?,areFieldsSet=false,lenient=true,zone=Europe/Dublin,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=126,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=18,SECOND=49,MILLISECOND=103,ZONE_OFFSET=0,DST_OFFSET=3600000] 05-06 16:18:54.142 25999-25999/com.me.raspiapp D/Hour﹕ 16 05-06 16:18:54.142 25999-25999/com.me.raspiapp D/Min﹕ 18

Любые предложения по исправлению?

+1

Покажите нам свой код: как вы устанавливаете свой «TimePicker» и как вы его используете? – shkschneider

ответ

1

Вы должны использовать время, вы получите обратно обратного вызова OnTimeSetListener

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    // Do something with the time chosen by the user 
} 

И вы можете увидеть пример HERE

Видимо вам нужно, чтобы заставить его потерять фокус, то значения обновляются

// force the timepicker to loose focus and the typed value is available ! 
timePicker.clearFocus(); 
// re-read the values, in my case i put them in a Time object. 
time.hour = timePicker.getCurrentHour(); 
time.minute = timePicker.getCurrentMinute(); 
+0

Могу ли я просто применить это прямо к виджету в своем java-коде. Я пробовал так: 'timePickerOn.setOnTimeChangedListener (новый TimePicker.OnTimeChangedListener() { @Override общественности недействительным onTimeChanged (вид TimePicker, внутр hourOfDay, внутр минут) { onMins = минута; onHours = hourOfDay; Log.d («ChangeMins», String.valueOf (минута)); } }); 'и я просто получаю нулевую обратную величину при выбранном значении – FrLukeDuke

+0

См. Мой edit bro –

+0

Нет, это все еще возвращает мне настоящее время – FrLukeDuke