简体   繁体   English

侦听器共享首选项

[英]listener sharedpreferences

I've a problem with this code. 我对此代码有疑问。 I want keep preferences values in my app but I've problem with the listener. 我想在应用程序中保留首选项值,但是侦听器出现问题。 Does not work, its does not save new values. 不起作用,它不保存新值。 Any idea about error(s)? 对错误有任何想法吗?

EDIT: onResume() works because when I open an activity on my app and close it, the value of sharepreferences is correct. 编辑: onResume()之所以有效,是因为当我在应用程序上打开一个活动并将其关闭时,sharepreferences的值是正确的。 Dialogs and activities does not keep values. 对话框和活动不保留值。

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);

There are some buttons and other info activities called by intents. 有一些按意图调用的按钮和其他信息活动。
A TextView that show a value from array and nothing. 一个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", "");

Others variables and most if/else. 其他变量和大多数if / else。

Preferences.xml: 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) {
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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM