Я пытаюсь установить будильник для следующего появления времени (по существу, в течение следующих 24 часов). Для этого я определил TimePickerFragment
, который будет использоваться в нескольких действиях, которые реализуют TimePickerDialog.OnTimeSetListener
.Код TimePickerFragment всегда устанавливает одно и то же время (Android)
не только нужно, чтобы создать правильное время срабатывания будильника (alarm
) из TimePicker
, но я также хочу, чтобы отобразить время в TextView
(timeText
). Проблема в том, что всякий раз, когда пользователь задает время, timeText
каждый раз изменяется на 10:12 вечера, независимо от того, установлен ли он или что он установлен. Я могу только представить, что что-то не переносится должным образом, но я не могу понять, что.
Это совокупность 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».
Как я нашел из этого ответа, вам нужно реализовать слушателя, проверьте этот ответ http://www.ciiycode.com/7ymy6BWQUeUe/android-set-text-for-textview-in-listview-from-dialogfragment – Yurets
Моя деятельность реализует слушателя вместо фрагмента, потому что именно там работа выполняется в это время. Это вызывает какую-то проблему, или я пропустил что-то еще? – Zircon
С 'активностью' это нормально, не обязательно использовать' фрагмент'. – Yurets