Инициализация Android с помощью SharedPreferences - PullRequest
1 голос
/ 21 октября 2011

У меня проблема с SharedPrefences и инициализацией.

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

Я думаю, что SharedPrefences будет решением, и это действительно так, я думаю, но у меня есть проблема с инициализацией их: у меня есть класс Activity с именем Options.У него есть статические функции, которые возвращают значение опций ... но у меня есть проблема, я вызываю эти функции до того, как создаю это действие (намерение), поэтому я думаю, что функции возвращают последнее значение, которое имеет последний пользовательвыбрано для параметров ...

Как загрузить параметры перед вызовами?

Я, хотя и использую в первую очередь Intent для отправки дополнительных данных пользователю и в onCreate ()Опции, инициализируйте их, но если я сделаю намерение, то появятся Опции (загрузится xml).

Любая помощь, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

Попробуйте что-то вроде этого .... добавьте методы для каждой переменной, которую вы хотите сохранить.

 public class PreferenceManager {

    private static PreferenceManager self;
    private SharedPreferences preferences = null;
    private SharedPreferences.Editor editor = null;
    private boolean isInitialised = false;
    private static final String MY_PREFERENCE = "mypreferencekey";
    private String myPreference = null;

    public void initialise(Context context) {
    if (!isInitialised) {
        preferences = context.getSharedPreferences("MyPreferencePlace", Context.MODE_PRIVATE);
        editor = preferences.edit();
        loadPreferences();
        isInitialised = true;
    }
    }

    public static PreferenceManager getInstance() {
    if (self == null) {
        self = new PreferenceManager();
    }
    return self;
    }

    private PreferenceManager() {
    }

    public void setPreference(String newPreferenceValue) {
    this.myPreference = newPreferenceValue;
    savePreferences();
    }

    public String getPreference(){
    return myPreference;
    }

    private void savePreferences() {
    editor.putString(MY_PREFERENCE, myPreference);
    editor.commit();
    }

    private void loadPreferences() {
    myPreference = preferences.getString(MY_PREFERENCE, null);
    }

}
0 голосов
/ 21 октября 2011

Я работаю над инжектором зависимостей для Android, и содержимое общих настроек уже вставляется в аннотированные поля (см .: https://github.com/ko5tik/andject, PreferenceInjector). Патчи и улучшения приветствуются. Сохранение настроек в ближайшее время

0 голосов
/ 21 октября 2011

Все, что нужно SharedPreferences - это context, и его можно инициализировать.Поскольку ваше приложение всегда открывает Activity для начала, у вас всегда есть context для работы.

Я бы посоветовал вам обернуть SharedPreferences в класс Singleton и просто передатьcontext в качестве параметра при методе getInstance.Таким образом вы сможете получить доступ к своим общим настройкам во всех видах деятельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...