[英]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.