2015-10-04 2 views
0

Я пытаюсь передать час и минуту из строки EditText в объект календаря, а затем поставлю час и минуту в Bundle, чтобы установить TimePickerFragment. Строка из ранее выбранного времени, которое пользователь вводит в строку EditText. Я разделил строку на часовые и минутные части, используя «Integer.parseInt». Когда я запускаю, я получаю «Invalid int:« 07PM »[например, это минуты с 5:07 вечера]. Дополнительные строки ошибок говорят« на java.lang.Integer.invalidInt на java.lang.Integer.parse в java . .lang.Integer.parseInt»является ли синтаксический анализ не работает, потому что„PM“в настоящее время включены в расколе Любые другие идеи о том, что является причиной проблемы файлКак пропустить час и минуту в Android Bundle?

активность:?

{ 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()); 
} 

ответ

1

Попробуйте этот код

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]); 

Надеюсь, это поможет вам представить вашу проблему.

+0

Хорошо, я думаю, что вижу. В основном удалите AM или PM с минутной порции времени. Верный? Кроме того, почему «час = час + 12»? – AJW

+1

@AJW, потому что 17:07 PM = 17:07 –

+0

Хорошо, и я вижу это, если только для PM раз. Я попробую, спасибо. – AJW

Смежные вопросы