Android: значения по умолчанию для SharedPreferences

Вроде всё просто и понятно. А когда начинаешь тестить, то на разных устройствах SharedPreferences ведёт себя по разному.

В статье про SharedPreferences рассмотрел как сейвить настройки и как их обновлять. Но, теперь выяснил, что обязательно первоначально дефолтные значения для всех параметров надо задать самому. Как оказалось, если дать устройству самому инициализировать параметры, то на одном устройстве это может быть int, а на другом String.

Возвращаясь к той статье, инициализировать дефолтный язык нужно в методе onCreate:

//пытаемся получить значение
lang = preferences.getString("pref_lng", "default");	
//если нет или дефолтное
if (lang.equals("default")) 
{  
   lang=getResources().getConfiguration().locale.getCountry();
   SharedPreferences.Editor editor = preferences.edit();
   //устанавливаем дефолтное значение
   editor.putString("pref_lng",   "default");
   editor.commit();
}

По аналогии, юзая метод putString необходимо установить значения для всех параметров. Иначе вам придётся везде try {} catch(){} юзать, типо:

int iSize = 0;
try
{
   //Пытаемся получить как Int. 
   //Если Android по умолчанию установил тип Int, то будет всё норм
   iSize = prefs.getInt("pref_size",28);
}
catch (Exception e)
{
   //Если исключение, то значит он инициализировал параметр как String
   iSize = Integer.parseInt(prefs.getString("pref_size","28"));
}
  Категории: Android, Коддинг