EDIT:
ОК. Оказывается, этот код работал (более или менее), который я оставил в строке, которая сбрасывала логические значения, которые я пытался изменить. Спасибо всем за помощь, хотя.
Возникли проблемы при использовании SharedPreferences
для чтения сохраненных данных массива при запуске моего приложения.
Мой _dPad
логический и мой _FreePlay
целочисленный загружает, сохраняет и передает в / из моего _renderer
без проблем.
Проблема начинается, когда я пытаюсь использовать некоторые массивы
easteregg[]
имеет только 2 записи прямо сейчас, поэтому, очевидно, я мог бы просто превратить их в отдельные переменные, но я хотел бы добавить больше массивов большей длины, чтобы это было удобным тестовым примером.
Я отметил в коде, что происходит (настройки easteregg[]
просто не изменились)
для чтения данных:
// Read saved preferences
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
_renderer._dPad = prefs.getBoolean("_dPad", false); // * works ok *
_renderer._FreePlay = prefs.getInt("_FreePlay", 1); // * works ok *
_renderer.easteregg[0] = prefs.getBoolean("easteregg[0]", false ); // * not working
_renderer.easteregg[1] = true; // * even this is not working
setRenderer(_renderer);
для записи данных:
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
// As good a time as any to save current config
save = false ; // don't commit if nothing changed.
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = prefs.edit();
if (_renderer._dPad != prefs.getBoolean("_dPad",false)){ save = true ;
editor.putBoolean("_dPad", _renderer._dPad);}
if (_renderer._FreePlay != prefs.getInt("_FreePlay",1)){ save = true ;
editor.putInt("_FreePlay", _renderer._FreePlay);}
editor.putBoolean("easteregg[0]", _renderer.easteregg[0]);
editor.putBoolean("easteregg[1]", _renderer.easteregg[1]);
if (save == true){editor.commit();}
}
А в классе .renderer
// START SAVE DATA
public boolean _dPad ; // false no Virtual Pad *Works Fine*
public int _FreePlay ; // 1 = no free play *Works Fine*
public boolean[] easteregg = new boolean[2]; *Values don't load or save*
//public boolean easteregg[]; // tried this first *CAUSES CRASH*
// END SAVE DATA
Должен ли я преобразовывать массивы в строки? Я не понимаю, как их изменить.