2015-02-03 7 views
-2

Мое приложение работает. и теперь моя проблема в том, что как я могу перенести его на sharedpreference? У меня есть achievement class. первое достижение - «Играть в 1-ю игру», так что я делаю. Я устанавливаю логическое значение всякий раз, когда игрок нажимает на play button, затем я назвал его в своем классе достижений, если его правда, то я делаю свой образ. (Видимо.) (View.VISIBLE). как я могу использовать sharedpreference для этого? Я смущен. и, пожалуйста, извиниласьBoolean Shared Preference

+1

Google не работает для вас? Я нашел дубликат, перепечатывающий название вашего вопроса в Google ... – 2Dee

+1

Возможный дубликат [Как сохранить логическое значение с помощью SharedPreferences в Android?] (Http://stackoverflow.com/questions/23919338/how-to-store -a-boolean-value-using-sharedpreferences-in-android) – 2Dee

ответ

0

Получить PreferenceManager получить DefaultSharedPreferences

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 

Золотое правило: использовать объект SharedPreference.Editor, чтобы иметь возможность написать в SharedPreference. Давайте получить его

SharedPreference.Editor editor = prefs.edit(); 

Помещенный в SharedPreferences нового булевыми

editor.putBoolean("ACHIEVEMENT_NAME", true); 

и как только вы сделали фиксацию изменений.

editor.commit(); 

Последний шаг очень важен, иначе вы потеряете изменения.

Маленький дополнительно:

Если вы не хотите другой объект своими руками, и предпочитают другой подобный подход:

prefs.edit().putBoolean("ACHIEVMENT_NAME", true).commit(); 
prefs.edit().putBoolean("ACHIEVMENT_NAME_2", true).commit(); 

Таким образом, вы вынуждены совершить в каждой вставке значения, потому что нет объектов, которые обрабатывают вставки.

prefs.edit().putBoolean("ACHIEVMENT_NAME", true); 
prefs.edit().putBoolean("ACHIEVMENT_NAME_2", true).commit(); 

Этот последний пример будет включать только ACHIEVMENT_NAME_2. Осторожно!

Чтобы получить логическое значение

boolean myBoolean = prefs.getBoolean(name, defaultValue); 

теперь это: имя это строка, используется при установке значения (так в приведенных выше примерах, это либо ACHIEVMENT_NAME или ACHIEVMENT_NAME_2).

В случае, если ни одно значение с указанным именем не найден, метод getBoolean возвратит DefaultValue вы указали

Пример:

boolean myBoolean = prefs.getBoolean("ACHIEVMENT_NAME", false); 
//ACHIEVMENT_NAME exists, myBoolean gets ACHIEVMENT_NAME's value 

boolean myNotFoundBoolean = prefs.getBoolean("ACHIEVMENT_NAME_3", false); 
//ACHIEVMENT_NAME_3 does NOT exists, myNotFoundBoolean is false 

boolean lastBooleanExample = prefs.getBoolean("ACHIEVMENT_NAME_4", true); 
//ACHIEVMENT_NAME_4 does NOT exists, lastBooleanExample is true 

В некоторых других случаях вам может понадобиться, чтобы проверить, если определенное значение было а не проверять, какое значение хранится.

Например, возможно, вам нужно просто проверить, есть ли значение, называемое «GAME_COMPLETED», которое может быть даже значением, указывающим, сколько раз игра была завершена, но как только она будет завершена как минимум 1 раз, вы можете разблокировать новый игровой режим.

В этом случае вам просто нужно проверить, если префы имеет GAME_COMPLETED значение,

if (prefs.contains("GAME_COMPLETED")) { 
... 
} 

много фантазии здесь, надеюсь, дал вам идею.

Чтобы очистить все предпочтения

editor.clear(); 
editor.commit(); 

время, чтобы удалить один определенный

editor.remove("GAME_COMPLETED"); 
editor.commit(); 

Больше (там больше Кажется, я объяснил почти все XD?) Здесь:

http://developer.android.com/reference/android/content/SharedPreferences.html

+0

сэр мне нужно сделать xml-файл? – user3698267

+0

Нет, XML-файл автоматически создается (и управляется) этими API-вызовами – FrancescoC

+0

, как получить значение логического? – user3698267

Смежные вопросы