java - 如何反射(reflect)类(class)偏好的变化?

标签 java android android-preferences android-sharedpreferences

我创建了一个简单的类“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/

相关文章:

java - JPanel 的精确副本或撤消..建议

java - 获取参数特殊字符

android - 在android中显示图像和管理内存

android - "check"无法动态创建复选框

android - 自定义 DialogPreference 的默认值为 null

android - 具有透明背景的 PreferenceFragment?

java - JUnit 测试失败 Hook 上的 Cucumber

java - Azure Cosmos Mongo API 版本 3.6,但无法连接 mongo.cosmos.azure.com :443

android - Android WorkManager 中的异步 Worker

Android:如何在首选项屏幕中禁用保留的图标空间