Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnSharedPreferenceChangeListener未调用#2_Android_Sharedpreferences - Fatal编程技术网

Android OnSharedPreferenceChangeListener未调用#2

Android OnSharedPreferenceChangeListener未调用#2,android,sharedpreferences,Android,Sharedpreferences,好的,我开始从谷歌的安卓系统中实现这个可怕的代码。未调用OnSharedPreferenceChangeListener。这是我的密码,你能给我一些建议吗 类别定义: private SharedPreferences sPrefs; private PreferenceChangedListener prefsChangedListener; 我有一个私人内部类: private class PreferenceChangedListener implements OnSha

好的,我开始从谷歌的安卓系统中实现这个可怕的代码。未调用OnSharedPreferenceChangeListener。这是我的密码,你能给我一些建议吗

类别定义:

private SharedPreferences sPrefs;
private PreferenceChangedListener prefsChangedListener;
我有一个私人内部类:

private class PreferenceChangedListener implements
        OnSharedPreferenceChangeListener {

    public void onSharedPreferenceChanged(
            SharedPreferences sharedPreferences, String key) {
        if (key == "highThreshold") {
            try {
                highThreshold = Float.parseFloat(sharedPreferences
                        .getString(key, "0"));
            } catch (Exception e) {
            }
        }
    }
}
已尝试在OnResume中输入以下代码,并在“Voorkeren”首选项活动启动后注册侦听器。两者都失败了

sPrefs = getPreferences(MODE_PRIVATE);
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener );
我定义了一个类voorkeren,它扩展了PreferenceActivity

public class Voorkeuren extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_voorkeuren, menu);
        return true;
    }
}
以下是我的开场白:

Intent intent = new Intent(getBaseContext(),Voorkeuren.class);
startActivity(intent);

该类显示良好,并在会话之间存储值。但如果设置发生变化,我的应用程序不应该进行轮询。有什么想法吗?我有一些关于SharedReferences.Editor的红色信息,但我不确定它是如何关联的。

不确定您的问题是什么以及需要什么

但你需要做一个改变。将此替换为onResume

sPrefs = getPreferences(MODE_PRIVATE);
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener );

在onCreate()中,谢谢:)getPreferences以某种方式返回与GetDefaultSharedReferences(此)不同的内容。我也让它与原始的内部类一起工作。更改..if(key==“highThreshold”)。。如果(key.equals(“highThreshold”)。。。
sPrefs = PreferenceManager.getDefaultSharedPreferences(this);;
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener);