在Android中以编程方式设置简单数据格式

时间:2014-01-10 21:43:01

标签: java android xml

我正在尝试通过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语句。为什么?问题在哪里?

1 个答案:

答案 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