如何在 Android 捆绑包中传递小时和分钟?
How do I pass the hour and minute in an Android Bundle?
我正在尝试将小时和分钟从 EditText 字符串传递到日历对象中,然后将小时和分钟放入 Bundle 中以设置为 TimePickerFragment。该字符串来自用户在 EditText 行中输入的先前选择的时间。我使用 "Integer.parseInt" 将字符串拆分为小时和分钟部分。当我 运行 时,我得到 "Invalid int: "07PM" [例如,这是从 5:07 PM 开始的分钟数]。其他错误行说 "at java.lang.Integer.invalidInt at java.lang.Integer.parse at java.lang.Integer.parseInt." 解析是否不起作用,因为 "PM" 是否包含在拆分中?关于导致问题的原因还有其他想法吗?
Activity 文件:
{ 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());
}
试试这个代码
timeStr = 5:07 PM;
timeStr = timeStr.replace(" ", "");
String[]timeParts = timeStr.split(":");
int hour = Integer.parseInt(timeParts[0]);
int minute;
if (timeParts[1].contains("AM")){
timeParts[1]= timeParts[1].replace("AM", "");
}
if (timeParts[1].contains("PM"){
timeParts[1]= timeParts[1].replace("PM", "");
hour = hour + 12;
}
minute = Integer.parseInt(timeParts[1]);
希望它能帮助您解决问题
我正在尝试将小时和分钟从 EditText 字符串传递到日历对象中,然后将小时和分钟放入 Bundle 中以设置为 TimePickerFragment。该字符串来自用户在 EditText 行中输入的先前选择的时间。我使用 "Integer.parseInt" 将字符串拆分为小时和分钟部分。当我 运行 时,我得到 "Invalid int: "07PM" [例如,这是从 5:07 PM 开始的分钟数]。其他错误行说 "at java.lang.Integer.invalidInt at java.lang.Integer.parse at java.lang.Integer.parseInt." 解析是否不起作用,因为 "PM" 是否包含在拆分中?关于导致问题的原因还有其他想法吗?
Activity 文件:
{ 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());
}
试试这个代码
timeStr = 5:07 PM;
timeStr = timeStr.replace(" ", "");
String[]timeParts = timeStr.split(":");
int hour = Integer.parseInt(timeParts[0]);
int minute;
if (timeParts[1].contains("AM")){
timeParts[1]= timeParts[1].replace("AM", "");
}
if (timeParts[1].contains("PM"){
timeParts[1]= timeParts[1].replace("PM", "");
hour = hour + 12;
}
minute = Integer.parseInt(timeParts[1]);
希望它能帮助您解决问题