0

このコードに問題があります。アプリで設定値を保持したいのですが、リスナーに問題があります。機能しません。新しい値を保存しません。エラーについて何か考えはありますか?

編集:onResume()アプリでアクティビティを開いて閉じると、sharepreferences の値が正しいため、機能します。ダイアログとアクティビティは値を保持しません。

public void onCreate(){
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
          listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
              public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) {
                    if(!preferencesChanged)preferenze();

            }
              };
      sp.registerOnSharedPreferenceChangeListener(listener);

インテントによって呼び出されるボタンやその他の情報アクティビティがいくつかあります。
配列からの値を表示し、何も表示しない TextView。

    public void onPause() {
        super.onPause();
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        sp.unregisterOnSharedPreferenceChangeListener(listener);

protected void onResume() {
        super.onResume();
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
        public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) {
        preferencesChanged = true;
                }
        };
        sp.registerOnSharedPreferenceChangeListener(listener);

protected void onStop(){
        super.onStop();
        if(preferencesChanged){
            //Update the app
            preferenze();
        }


public void preferenze()
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

        CheckboxPreference = prefs.getBoolean("checkboxPref", true);
        ListPreference = prefs.getString("listpref", "");

その他の変数とほとんどの if/else。

Preferences.xml:

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.layout.preferences);

    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) {
4

1 に答える 1

0
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this); sp.registerOnSharedPreferenceChangeListener(this); }

registerOnSharedPreferenceChangeListener が不足していると思います

于 2013-01-12T15:12:53.447 に答える