Как отразить изменения в предпочтениях к классу?

Я создал простой класс «Пользователь» с атрибутом String username. Я предполагаю, что, поскольку Android использует Java, я могу создавать собственные классы, и он будет использовать их соответствующим образом. В моем SettingsActivity.java у меня есть:

protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref_general);


    SharedPreferences sharedPref = getPreferenceScreen().getSharedPreferences();
    EditTextPreference editTextPref = (EditTextPreference) findPreference("username");
    editTextPref.setSummary(sharedPref.getString("username", "Default"));
    //sharedPref.registerOnSharedPreferenceChangeListener(this);

}

public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
    // Get current summary
    Preference pref = findPreference(arg1);
    if(pref instanceof EditTextPreference){
        EditTextPreference etp = (EditTextPreference) pref;
        pref.setSummary(etp.getText());
        MainMenu.user.setName(etp.getText()); //This is where I try to update my class
    }
}

На данный момент, всякий раз, когда я меняю значение моего виджета EditTextPreference, он не обновляет общедоступный статический объект пользователя, расположенный в MainMenu. Кроме того, дополнительный вопрос: поскольку Android сохраняет настройки при каждом запуске приложения, как мне обновить строку User.username при запуске?


person Sam Meow    schedule 06.04.2013    source источник


Ответы (1)


В onPostCreate удалить комментарий //

sharedPref.registerOnSharedPreferenceChangeListener(this);
person Hoan Nguyen    schedule 06.04.2013
comment
Вау, это сработало отлично. Благодаря тонну! Что касается последующего вопроса, знаете ли вы, как получить доступ к настройкам, чтобы получить значение для «editTextPref» с ключом: имя пользователя из другого действия? Я хочу иметь возможность получить значение предпочтения без фактического входа в действие Preferences. - person Sam Meow; 06.04.2013
comment
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.getString (имя пользователя,): - person Hoan Nguyen; 06.04.2013
comment
Благодаря тонну. Вы реально экономите время. Я бы не спал всю ночь, если бы не ты. - person Sam Meow; 06.04.2013