Android: Как получить SharedPreferences объекта динамически? - PullRequest
1 голос
/ 12 января 2012

У меня есть массив с идентификаторами нескольких флажков.В onResume я хочу проверить, являются ли логические значения этих флажков true или false (используя цикл), чтобы адаптировать вид.Вот мой код.Это не работает, поскольку говорит мне, что каждое значение равно false.Может кто-нибудь сказать мне, почему это происходит?

ArrayList<Integer> boxArray = new ArrayList<Integer>();
boxArray.add(R.id.boxA);
boxArray.add(R.id.boxB);
boxArray.add(R.id.boxC);

И в onReturn:

SharedPreferences preferences =
  PreferenceManager.getDefaultSharedPreferences(this);

for (int i=0; i<boxArray.size(); i++) {
  if (preferences.getBoolean
      (findViewById(boxArray.get(i)).toString(), false) == true) {
    //change the view of the checkbox to checked if its value is true
    CheckBox currentBox = (CheckBox) findViewById(boxArray.get(i));
    currentBox.setChecked(true);
  }
 }

1 Ответ

0 голосов
/ 12 января 2012

Как установить значение в общих настройках?

Когда флажок установлен, вы делаете что-то вроде

preferences.edit().putBoolean(TheCheckedBoxId, true);

Если метод getBoolean () с общими предпочтениями всегда по умолчанию равен false, то либо значение вообще отсутствует, либо онопросто ложьЯ думаю, что вы можете попробовать

preferences.contains(findViewById(boxArray.get(i)).toString()) 

, чтобы увидеть, существует ли этот ключ вообще.Есть также метод Preferences.getAll ().

...