3

好的,我开始从 Google 的 android 实现这个可怕的代码。未调用 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 中尝试了以下代码,并在“Voorkeuren”首选项活动启动后注册了侦听器。两者都失败了。

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

我定义了一个扩展 PreferenceActivity 的类 Voorkeuren

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

该类显示良好,并存储会话之间的值。但是如果设置改变,我的应用程序不应该轮询。有任何想法吗?我对 SharedPreferences.Editor 有一些疑问,但我不确定它是如何相关的。

4

1 回答 1

4

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

但是,您需要进行一项更改。在 onResume 中替换它

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

sPrefs = PreferenceManager.getDefaultSharedPreferences(this);;
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener); 

在 onCreate()

于 2012-12-02T13:25:18.077 回答