我创建了一个简单的类“User”,它有一个属性字符串用户名
。我假设由于 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
中的公共(public)静态用户对象。另外,还有一个后续问题 - 由于 Android 会在应用程序启动的每个实例中保存首选项,因此我将如何在启动时更新我的 User.username
字符串?
最佳答案
在onPostCreate
中删除注释//
sharedPref.registerOnSharedPreferenceChangeListener(this);
关于java - 如何反射(reflect)类(class)偏好的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846783/