如何将偏好的变化反映到课堂上?

时间:2013-04-06 03:43:38

标签: java android android-preferences android-sharedpreferences

我创建了一个简单的类“User”,它具有属性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字符串?

1 个答案:

答案 0 :(得分:1)

onPostCreate中删除评论//

sharedPref.registerOnSharedPreferenceChangeListener(this);