- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想获取复选框首选项的值。哪种方法适合收听偏好?
OnPreferenceChangeListener 和 OnSharedPreferenceChangeListener 之间的真正区别是什么?!
更新为什么不调用 onSharedPreferenceChanged?
public class Setting extends PreferenceActivity implements
OnSharedPreferenceChangeListener // ,OnPreferenceChangeListener
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);// deprecated warning
}
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {// DO Stuff
}
@Override
protected void onResume() {
super.onResume();
// getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
// PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
this.getSharedPreferences("myPrefDB", MODE_PRIVATE)
.registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
// PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(this);
this.getSharedPreferences("myPrefDB", MODE_PRIVATE)
.unregisterOnSharedPreferenceChangeListener(this);
}
}
最佳答案
这两者之间的区别在于 OnPreferenceChangeListener
是一个回调,仅当其 偏好更改(应用于单个键)时调用,而 OnSharedPreferenceChange
是每当该 SharedPreferences
对象中的任何 首选项更改时调用的回调(适用于所有键)。
因此,在您的情况下,您需要将 OnPreferenceChangeListener
与您的 CheckBoxPreference
一起使用。
这是一个例子:
Preference ckboxPref = this.findPreference(CKBOX_PREF_KEY);
ckboxPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
//Do stuff
}
});
如果您使用 fragment ,方法 findPreference
将不起作用,但您没有使用任何 fragment ,所以没问题。
关于android - OnPreferenceChangeListener 和 OnSharedPreferenceChangeListener 有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321637/
当首选项区域中的首选项更改时,我尝试通过主题更改应用程序背景颜色和字体类型。 到目前为止,我的首选项已经正常工作,但是当我放入监听器时,它只是没有被调用。我正在使用 toast 进行测试,看看它是否出
在我的 onCreate void 中,我使用它来检查首选项是否已更改: SharedPreferences preferences = PreferenceManager.getDefaul
我在谷歌上搜索了一下,找到了一些让我感到困惑的答案,因为我是初学者。我正在尝试将 OnSharedPreferenceChangeListener() 实现到我的 SharedPreferences
在设置 Activity 中,我有多个字段,一旦用户按下“保存”,所有这些字段将作为键值单独存储在sharedPreference中。 问题是每次编辑器更改,例如 editor.putString(S
我为 android 制作壁纸,我希望用户可以选择选项。显示带有选项的菜单,但有问题。当我单击任何选项并返回壁纸屏幕时,它们不会更新新选项。为什么?我的代码WallpaperService: publ
好吧,我开始从 Google 的 android 中实现这个可怕的代码。未调用 OnSharedPreferenceChangeListener。这是我的代码,请问有什么建议吗? 类定义: priva
基本上是设计问题 - 拥有一个 PreferenceActivity 应该让它实现 OnSharedPreferenceChangeListener 还是应该在另一个类中定义此功能 - 比如在内部类中
我有此 Activity ,但遇到未调用 OnSharedPreferenceChanged 的问题。我的用例是我想在偏好描述中显示偏好值。下面翻译的代码是从 java 翻译过来的,在那里工作得很
我编写了一个包含 3 个选项卡的应用程序。每个选项卡都有相同的 ListView ,但数据源不同。我在 tabhost Activity 中设置了 SharedPreferences,但我将我的 on
我有一个实现 OnSharedPreferenceChangeListener 的 preferenceActivity,并且我已经实现了 onSharedPreferenceChanged 方法。我
在 Android 中,您可以执行以下操作来监听共享偏好的变化 SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
我正在注册一个这样的偏好更改监听器(在我的主要 Activity 的 onCreate() 中): SharedPreferences prefs = PreferenceManager.getDef
好吧,今晚早些时候我刚刚问了一个问题,关于给用户一个按钮来将动态壁纸的首选项重置为默认值。我想通了,但按下按钮实际上不会调用 OnSharedPreferenceChanged 直到首选项屏幕关闭并重
我一直在组装一个简单的 Android ListView 应用程序来自学 LoaderManagers 和 Loaders。该应用仅提供一个加载器,当共享首选项发生变化时,该加载器会通过 OnShar
我正在使用 OnSharedPreferenceChangeListener(): listener=new SharedPreferences.OnSharedPreferenceChangeLis
我想获取复选框首选项的值。哪种方法适合收听偏好? OnPreferenceChangeListener 和 OnSharedPreferenceChangeListener 之间的真正区别是什么?!
我的应用程序中有一个 PreferenceActivity 和一个服务以及其他组件。 当偏好改变时,我希望我的服务根据偏好改变做一些工作,所以我将我的服务配置为 OnSharedPreferenceC
为了简化测试我无法解决的问题,我打开了一个普通项目 - 为什么当用户更改 ListPreference 的值时我的监听器没有被调用。重新运行应用程序可以看到值已更改。 preferences.xml
我已经尝试了不同的事情好几个小时了,但我似乎无法理解当用户通过 Android 中的 EditTextPreference 输入新文本时如何更新 TextView。 我在匿名监听器类内的 onShar
我想制作一个选项类,您可以在其中加载用户的所有首选项。如果 sharedPreference 中没有键,那么我想在 Preference 中加载 xml 默认值。 问题是,我无法让一个类也使用带有实现
我是一名优秀的程序员,十分优秀!