Я пытаюсь передать час и минуту из строки EditText в объект календаря, а затем поместить час и минуту в Bundle для установки в TimePickerFragment. Строка относится к ранее выбранному времени, которое пользователь вводит в строке EditText. Я разделил строку на часовую и минутную части, используя «Integer.parseInt». Когда я запускаю, я получаю «Invalid int:« 07PM »[например, минуты с 17:07]. Дополнительные строки ошибок говорят: «at java.lang.Integer.invalidInt at java.lang.Integer.parse at java .lang.Integer.parseInt." Анализ не работает, потому что "PM" включается в разделение? Любые другие идеи о том, что вызывает проблему?
Файл активности:
{ Calendar tcal = Calendar.getInstance();
String timeStr = gEditText.getText().toString().replace(" ", "");
String[]timeParts = timeStr.split(":");
tcal.set(Calendar.HOUR, Integer.parseInt(timeParts[0]));
tcal.set(Calendar.MINUTE, Integer.parseInt(timeParts[1]));
Bundle timebundle = new Bundle();
timebundle.putInt("hour", tcal.get(Calendar.HOUR));
timebundle.putInt("minute", tcal.get(Calendar.MINUTE));
}
Файл TimePicker:
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
public Dialog onCreateDialog(Bundle savedInstanceState) {
if (getArguments() != null) {
cal = Calendar.getInstance();
hour = getArguments().getInt("hour");
minute = getArguments().getInt("minute");
cal.set(Calendar.HOUR, Calendar.MINUTE);
}
TimePickerDialog dialog = new TimePickerDialog(getActivity(), this , hour, minute, false);
dialog.setTitle("Select a Due Time");
return dialog;
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
txtTime = (EditText) getActivity().getWindow().getDecorView().getRootView().findViewById(R.id.GEditText);
String AM_PM = "";
Calendar displaytime = Calendar.getInstance();
displaytime.set(Calendar.HOUR_OF_DAY, hourOfDay);
displaytime.set(Calendar.MINUTE, minute);
if (displaytime.get(Calendar.AM_PM) == Calendar.AM)
AM_PM = "AM";
else if (displaytime.get(Calendar.AM_PM) == Calendar.PM)
AM_PM = "PM";
String minuteString;
if (minute < 10)
minuteString = "0" + minute;
else
minuteString = "" + minute;
String hours = (displaytime.get(Calendar.HOUR)== 0) ? "12" : displaytime.get(Calendar.HOUR) + "";
txtTime.setText(hours + ":" + minuteString + " " + AM_PM + " ");
txtTime.setSelection(txtTime.getText().length());
}