我正在尝试将Datepicker
的日期保存到文件中,并且在打开应用程序时从上次读回来并相应地设置日期(如果这是第一次没有文件)已经保存,设置为2000年1月1日)。除了DatePicker
之外,所有小部件(例如editText,名称,性别等)都能正常工作。
由于某些原因,它不起作用。有人可以帮忙吗?文件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 :(得分:0)
我将所有内容转换为Calendar
并避免使用Date
已弃用的方法。它是固定的(Date.getYear()
给出一个两位数的YY
,应该与1900一起添加。)