1

我有这样的偏好选项:

public class Opciones extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.opciones);

        SharedPreferences sp = getPreferenceScreen().getSharedPreferences();

        EditTextPreference editTextPref = (EditTextPreference) findPreference( "opcCodigo" );
        editTextPref.setSummary(sp.getString("opcCodigo", ""));

        EditTextPreference editTextPref2 = (EditTextPreference) findPreference( "opcUrl" );
        editTextPref2.setSummary(sp.getString("opcUrl", ""));
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        Preference pref = findPreference(key);
        if (pref instanceof EditTextPreference) {
            EditTextPreference etp = (EditTextPreference) pref;
            pref.setSummary(etp.getText());
        }
    }
}

事实是,当我更改数据时,字段没有刷新,我必须关闭活动并再次启动它才能看到它们。

我错过了什么?

提前致谢

4

2 回答 2

1

实现 OnPreferenceChangeListener 并覆盖以下方法。

 @Override
 public boolean onPreferenceChange(Preference preference, Object newValue) {
      //newValue is the edited data
      if(editTextPref == preference) editTextPref.setSummary(newValue);
      else editTextPref2.setSummary(newValue);
 }
于 2013-03-06T12:32:16.953 回答
1

试试这个:
1. 添加OnSharedPreferenceChangeListner

public class Opciones extends PreferenceActivity implements
    OnSharedPreferenceChangeListener

2. 并重写方法onSharedPreferenceChanged

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key){
   // ...
}
于 2013-03-06T12:38:03.430 回答