TimePickerFragment 代码始终设置相同的时间 (Android)

TimePickerFragment code always sets the same time (Android)

我正在尝试为下一次出现的时间设置闹钟(基本上是在接下来的 24 小时内)。为此,我定义了一个 TimePickerFragment 用于实现 TimePickerDialog.OnTimeSetListener.

的多个活动

我不仅需要从 TimePicker 创建正确的闹钟时间 (alarm),而且我还想在 TextView (timeText).问题是每当用户设置时间时,timeText 每次都会更改为 10:12 PM,无论它何时设置或设置为什么。我只能想象有些东西没有被正确地继承,但我想不通是什么。

这是TimePickerFragment的全部:

public class TimePickerFragment extends DialogFragment {
int hour, minute;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    // use the current time as the default values for the picker
    Calendar c = Calendar.getInstance();
    hour = c.get(Calendar.HOUR_OF_DAY);
    minute = c.get(Calendar.MINUTE);

    // Create a new instance of TimePickerDialog and return it
    return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener)getActivity(), hour, minute, DateFormat.is24HourFormat(getActivity()));
}

}

这里是实现 类:

之一的相关代码
public void showTimePickerDialog(View v) {
    DialogFragment newFragment = new TimePickerFragment();
    newFragment.show(getFragmentManager(), "timePicker");
}

public void onTimeSet(TimePicker view, int hour, int minute) {
    alarm = new GregorianCalendar();
    alarm.set(Calendar.HOUR_OF_DAY,hour);
    alarm.set(Calendar.MINUTE,minute);
    alarm.set(Calendar.SECOND,0);
    if(alarm.getTimeInMillis()<=Calendar.getInstance().getTimeInMillis()) { alarm.add(Calendar.DATE,1); }
    //timeText.setText(String.valueOf(alarm.get(Calendar.AM_PM)));
    showAlarm();
}

private void showAlarm() {
    String ampm;
    if(alarm.AM_PM==0) {ampm="AM";}
    else{ampm="PM";}
    timeText.setText(alarm.HOUR+":"+alarm.MINUTE+" "+ampm);
}

我不确定这是否有帮助,但每当我单击按钮打开 TimePicker 以及从中设置时间时,都会记录以下内容: E/ViewRootImpl﹕ sendUserActionEvent() mView == null 这只会让我进一步相信我在这个过程中错过了一些东西。

此代码经历了许多更改,但它从未正常工作,充其量总是产生这个“10:12 PM”结果。

这是一个简单的,也许是愚蠢的错误,但我终于想通了。 Android Studio 不介意我使用 alarm.HOUR 获取变量,但这是错误的。

简而言之,我应该使用 alarm.get(Calendar.HOUR) 而不是 alarm.HOUR