我正在尝试通过Radio Dialog日期格式进行更改。我写了这段代码。
builder.setSingleChoiceItems(items, load(), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item)
{
case 0:
dataFormat = "HH/mm/ss YYYY/MM/DD";
index = 0;
break;
case 1:
index = 1;
break;
case 2:
index = 2;
break;
case 3:
break;
}
MyClass class = new MyClass();
class.setDateFormat(dataFormat);
savePreferences("DataFormat", item);
}
});
private void savePreferences(String key, int value) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = sharedPreferences.edit();
editor.putInt(key, value);
editor.commit();
}
private int load() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
int value = sharedPreferences.getInt("DataFormat", 0);
return value;
}
它运行良好并正确存储值,但是当我去其他类时,所有都保持原样(日期格式)。在其他类(MyClass)我有这个代码
SimpleDateFormat dateFormat;
String data;
public void setDateFormat(String data) {
this.data = data;
}
public SimpleDateFormat getDateFormat() {
if(data != null) {
dateFormat = new SimpleDateFormat(data);
}
else {
dateFormat = new SimpleDateFormat("HH:mm:ss dd-MM-yyyy");
}
return dateFormat;
}
问题出在这里。它返回null,因为通过我看到的日志进入了else语句。为什么?问题在哪里?
答案 0 :(得分:0)
我怀疑你需要防范空字符串,如此
if (data != null && data.length() > 0)
我做了一个完整的独立测试
SimpleDateFormat dateFormat = null;
String data = null;
public void setDateFormat(String data) {
this.data = data;
}
public SimpleDateFormat getDateFormat() {
if (data != null && data.length() > 0) {
dateFormat = new SimpleDateFormat(data);
} else {
dateFormat = new SimpleDateFormat("HH:mm:ss dd-MM-yyyy");
}
return dateFormat;
}
public static void main(String args[]) {
String date = "2014-01-20";
Question ja = new Question(); // this class
ja.setDateFormat("yyyy-MM-dd");
try {
System.out.println(ja.getDateFormat().parse(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
输出
Mon Jan 20 00:00:00 EST 2014