У меня есть форма ввода в действии, где я бы хотел получить время начала и окончания события. Я использую timepicker, отображаемый в фрагменте диалога, чтобы получить время начала и вернуть его в основное действие, но как повторно использовать ту же логику для получения конечного времени события? Мой код:Получение времен от двух TimePickers в DialogFragments
Основная деятельность:
public class AddEventActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener{
private int pickerHour = 0;
private int pickerMin = 0;
//code ommitted for length
public void showTimePickerDialog(View v) {
TimePickerFragment newFragment = new TimePickerFragment();
newFragment.show(getFragmentManager(), "timePicker");
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String amOrPm = "am";
pickerHour = hourOfDay;
pickerMin = minute;
String minutesString = "";
if (hourOfDay > 12){ //translate to 12 hr clock. Little workaround to get both timepicker and am/pm label to show up correctly.
amOrPm = "pm";
pickerHour-=12;
}
if (pickerMin < 10) {
minutesString = "0"; //fix weird bug where only one zero is shown on times ending in :00
}
startTimeView.setText(pickerHour + " : " + minutesString + pickerMin + " " +amOrPm);
}
TimePickerFragment:
public class TimePickerFragment extends DialogFragment {
int hour,minute;
private Activity mActivity;
private TimePickerDialog.OnTimeSetListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
try {
mListener = (TimePickerDialog.OnTimeSetListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnTimeSetListener");
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(mActivity, mListener, hour, minute,
DateFormat.is24HourFormat(mActivity));
}
}
мне нужно, чтобы быть в состоянии провести различие между временем начала и окончания времени, но я не уверен, как отличить их, не повторяя себя. Я довольно новичок в Java и Android. Большое вам спасибо за любую помощь.
Это было просто и сработало - единственный раз, когда возникает проблема, пользователь пытается чтобы установить конечное время перед установкой времени начала, так как в этом случае логическое значение не переключается правильно. Для моих целей прямо сейчас это работает отлично. Спасибо! – perrysetgo
Рад, что это помогло. Да, есть потенциальные проблемы, и это было основано на иллюстрации того, как решить ваши текущие требования. В идеале вы должны сохранить время начала как объект «Дата» (например), а затем, когда пользователь вводит конечное время, создайте для него другой объект «Дата» и сравните их, чтобы конец был позже начала. Это не слишком сложно сделать, но выходило за рамки того, что вы просили. Есть много примеров для сравнения даты/времени, поэтому я уверен, что вы найдете что-то, если/когда вам нужно. – Squonk