Android 安卓计时器故障

Android 安卓计时器故障,android,timepicker,Android,Timepicker,我试图从我的TimePicker小部件中提取所选时间,但是当我使用getCurrentHour()和getCurrentMinute()方法时,它会不断返回当前时间,而不是我选择的时间 ` 公共类TimerLockActivity扩展活动{ private Calendar calendar; private AlarmManager alarmManager; private PendingIntent pendingIntent; private TimePicker timePickerO

我试图从我的
TimePicker
小部件中提取所选时间,但是当我使用
getCurrentHour()
getCurrentMinute()
方法时,它会不断返回当前时间,而不是我选择的时间

`

公共类TimerLockActivity扩展活动{

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/﹕ 表面破坏:ANDROID_原生_窗口_魔法
05-06 16:18:54.142 25999-25999/com.me.raspiapp D/小时﹕ 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/时间﹕ java.util.gregorianalendar[time=?,areFieldsSet=false,lenient=true,zone=Europe/Dublin,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=4,YEAR=19,WEEK=2,DAY=6,DAY=126,DAY=4,DAY=1,AM=1,HOUR=4,HOUR=16,Minutes=18,SECOND=49,Millistics=103,DSTU=3600]
05-06 16:18:54.142 25999-25999/com.me.raspiapp D/小时﹕ 16
05-06 16:18:54.142 25999-25999/com.me.raspiapp D/Min﹕ 18


有任何修复建议吗?

您应该使用您在回调中返回的时间

你可以看到一个例子

显然,您需要强制它放松焦点,然后更新值

// 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();

向我们展示你的代码:你是如何设置你的
TimePicker
的,以及你是如何使用它的?我可以直接把它应用到我的java代码中的小部件上吗?我试过这样做:
timePickerOn.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){@Override public void onTimeChanged(TimePicker视图,inthourofday,intminute){onMins=minute;onHours=hourOfDay;Log.d(“ChangeMins”,String.valueOf(minute));}}});
我刚刚得到了零,因为所选的值仍然是现在的时间。请关闭这个问题:)
// 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();