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 に答える