如何在 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]);

希望它能帮助您解决问题