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