如何检测是否在首选项中进行了更改?

我有一个扩展PreferenceActivity的类,并显示我的应用程序的首选项屏幕。 是否可以检查是否对首选项进行了更改?

这有助于…

http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html

其他相关的文章: SharedPreferences.onSharedPreferenceChangeListener不被一致调用


public class PreferenceClass extends PreferenceActivity { OnSharedPreferenceChangeListener listener; public void onCreate(Bundle savedInstanceState) { SharedPreferences prefs = this.getSharedPreferences("settings", 0); listener = new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { int flag = 1; } }; prefs.registerOnSharedPreferenceChangeListener(listener); super.onCreate(null); addPreferencesFromResource(R.xml.settings); } } 

 SharedPreferences.OnSharedPreferenceChangeListener spChanged = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { // your stuff here } }; 

PreferenceActivity ,即使其成为PreferenceActivity类的成员,然后在PreferenceActivity.onCreate()方法中执行registerOnSharedPreferenceChangeListener(spChanged)

这就是我所做的,我从来没有问题。

否则,这是你的有条件的检查过程中的错误。 发布代码。

编辑:

从你发布的代码中,你应该使prefs成为一个类成员variables,因此它具有全局作用域。

并做prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 而不是getSharedPreferences因为您还没有创build该文件。

要创build一个文件,你需要使用PreferenceManager 。 要获得PreferenceManager ,请使用Activity.getPreferenceManager()

PreferenceActivity类中,实现SharedPreferences.OnSharedPreferenceChangeListener接口。 将所需的onSharedPreferenceChanged方法添加到您的类中,并将其注册到onCreate

在这里看到示例代码:

 public class MyPreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.fw_preferences); //deprecated PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { // handle the preference change here } } 

从官方文档:

阅读首选项 >收听首选项更改

Interesting Posts