У меня есть 3 строки, содержащие значения дня, месяца и года. Например:Android установлен DatePicker на определенную дату
String mday = "02";
String mmonth="07";
String myear="2013";
Мне нужно установить DatePicker в своей деятельности на месяц с даты, указанной выше. Я не имею в виду просто добавить 1 к миллионному значению ... в случае 31-го дня я получаю недопустимую дату. Так что мне нужно каким-то образом увеличить дату (действительный путь) и установить DatePicker с его значением. Я знаю, что установка Datepicker со значениями Int делается так:
DatePicker datepicker = (DatePicker) findViewById(R.id.datePicker1);
datepicker.init(iYear, iMonth, iDay, null);
// where iYear,iMonth and iDay are integers
Но как я могу получить целые значения: день, месяц и год увеличивающегося DATE на один месяц?
Итак, между первыми значениями (строками) и конечными значениями инкрементной даты (целые числа), какие шаги я должен выполнить?
Предполагаю, что мне нужно будет использовать Календарь. Так что мой код должен выглядеть следующим образом:
Integer iYear, iMonth, iDay = 0;
String mday = "02";
String mmonth="07";
String myear="2013";
Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(myear), Integer.parseInt(mmonth), Integer.parseInt(mday));
cal.add(Calendar.MONTH, 1);
// here I should get the values from cal inside the iYear, iMonth, iDay, but I do not seem to succeed.
DatePicker datepicker = (DatePicker) findViewById(R.id.datePicker1);
datepicker.init(iYear, iMonth, iDay, null);
если я:
datepicker.init(cal.YEAR, cal.MONTH, cal.DATE, null);
затем сбой приложения. Что мне делать? Как установить это значение в месяц на дату DatePicker?
UPDATE Я изменил мой тестовый код для этого:
Calendar cal = Calendar.getInstance();
cal.set(2013, 05, 23);
cal.add(Calendar.MONTH, 1);
int xxday = cal.get(Calendar.DATE);
int xxmonth = cal.get(Calendar.MONTH);
int xxyear = cal.get(Calendar.YEAR);
datepicker.init(xxyear, xxmonth, xxday, null);
но теперь Datepicker устанавливается в один месяц с настоящего момента вместо одного месяца с даты разыскиваемого Таким образом, вместо (2013-06- 23) У меня (2013-09-23). Я предполагаю, что это из-за
int xxmonth = cal.get(Calendar.MONTH);
Как я могу получить реальный месяц из Календаря cal; ?
что является StackTrace авиакатастрофы? Я предполагаю nullpointer –
Если я это сделаю: 'Calendar cal = Calendar.getInstance(); cal.set (2013, 07, 23); cal.add (Calendar.MONTH, 1); int xxday = cal.get (Calendar.DATE); int xxmonth = cal.get (Календарь.МЕСЯЦ); int xxyear = cal.get (Calendar.YEAR); datepicker.init (xxyear, xxmonth, xxday, null); 'then My datepicker установлен в 23 сентября 2019 года. Вместо 23.08.2013. Я предполагаю, что это потому, что я получаю доступ к Calendar.MONTH, который установлен на сегодняшний день?!?!? – user1137313
FATAL Исключение: main (исключение исключаемого аргумента - ток должен быть> = начало и <= конец). Это для предыдущего кода. Как я уже сказал в своем комментарии выше, я нашел способ установить его на другую дату, но не мою пользовательскую дату ... поэтому я не получаю больше ошибок, у меня просто нет даты, которую я хочу – user1137313