2014-01-10 3 views
0

Я пытаюсь изменить форматы даты радиодиалога. Я написал этот код.Установите простой формат данных программно в Android

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 
Смежные вопросы