2015-08-13 2 views
1

Я пытаюсь сохранить дату Datepicker в файл, и при открытии приложения прочитайте его с последнего времени и установите дату на нем соответственно (если это первый раз и файл уже не был сохранен, установите его на 1 января 2000 года). Все виджеты, такие как editText, имена, пол и т. Д. Работают правильно, кроме DatePicker.Дата и дата сохранения даты DatePicker Android

По некоторым причинам это не сработает. Может ли кто-нибудь помочь с этим? В части IO файла нет никаких проблем; вероятно, есть ошибки Calendar/Date, которые я предполагаю.

При загрузке:

Date BD=new Date(2000,0,1); 
     // Loading (w/o exception handling code): 
     try { 
      FileInputStream fis = this.openFileInput(fileName); 
      ObjectInputStream is = new ObjectInputStream(fis); 
      Object[] formData = (Object[]) is.readObject(); 
      is.close(); 
      fis.close(); 

      // parse data from array 
     BD=(Date) formData[0]; 
//there are other fields as well 

    } catch (FileNotFoundException e) { 
     // TODO if for the first time- No data file exists 
     // sets initial default value 
    } 
    catch (IOException e) { 
    } 
    catch (ClassNotFoundException e) { 
    } 

    //set value for BD 
    final DatePicker BDDatePicker = (DatePicker) findViewById(R.id.datePickerBD); 
    BDDatePicker.updateDate(BD.getYear(), BD.getMonth(), BD.getDate()); 

И для сохранения:

final DatePicker BDdatePicker = (DatePicker) findViewById(R.id.datePickerBD); 
    Date BD= getDateFromDatePicker(BDdatePicker); 
    Object [] formData=new Object [7]; 

    formData [0]=BD; 


    //Saving (w/o exception handling code): 
    FileOutputStream fos; 
    try { 
     fos = this.openFileOutput(fileName, Context.MODE_PRIVATE); 
     try { 
      ObjectOutputStream os = new ObjectOutputStream(fos); 
      os.writeObject(formData); 
      fos.close(); 
      os.close(); 
     } catch (IOException e) { 
     } 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
    } 

ответ

0

я преобразовал все, чтобы Calendar и избежать Date «S устаревшие методы. Он был исправлен (Date.getYear() дает двузначный YY, который должен быть добавлен с 1900).