Android OnSharedPreferenceChangeListener未被调用
我创建了一个Android OnSharedPreferenceChangeListener未被调用,android,Android,我创建了一个PreferenceActivity,并实现了它 通过对首选项使用首选项屏幕,不会调用 为什么未调用OnSharedPreferenceChangeListener() MyPreferenceActivity.java package com.example.sms_reader; import android.content.Intent; import android.content.SharedPreferences; import android.content.Shar
PreferenceActivity
,并实现了它
通过对首选项使用首选项屏幕
,不会调用
为什么未调用OnSharedPreferenceChangeListener()
MyPreferenceActivity.java
package com.example.sms_reader;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
public class MyPreferenceActivity
extends PreferenceActivity implements OnSharedPreferenceChangeListener {
SharedPreferences prefs;
MyPreferenceActivity listener;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences preferences,
String key) {
if(key == "RESET") {
Toast.makeText(getApplicationContext(),
"RESET Values changed", Toast.LENGTH_LONG).show();
Log.d("on shared preference gets a call","on shared preference gets a call" );
Boolean b = preferences.getBoolean("reset", false);
Log.d("reset value", String.valueOf(b));
if (b == true) {
Toast.makeText(getApplicationContext(),
"RESET Values changed", Toast.LENGTH_LONG).show();
preferences.edit().clear().commit();
PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.preferences, true);
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
}
}
}
}
将条件更改为如下所示:
if (key.equals("RESET")) {
如果它仍然不工作,那么在它上面放一个断点(或者在它前面放一条日志消息),看看执行是否真的通过了那里。你确定它没有被调用,或者只是没有找到“重置”键?