好吧,我开始从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的东西,但我不确定它是如何相关的。
答案 0 :(得分:4)
不确定您的问题是什么以及需要什么。
但是你需要做一个改变。在onResume
中替换它sPrefs = getPreferences(MODE_PRIVATE);
prefsChangedListener = new PreferenceChangedListener();
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener );
到
sPrefs = PreferenceManager.getDefaultSharedPreferences(this);;
prefsChangedListener = new PreferenceChangedListener();
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener);
onCreate()中的