1

我想在我的偏好活动中添加一个复选框,以启用或禁用接收器。这是针对将在后台运行的服务,在启动完成时,将取决于两件事:1)首选项是否为真,2)是否启用了 wifi。

所以它会像这样工作;

  1. 用户打开手机
  2. 启动完成检查接收器是否启用(由 checkboxpreference 设置)
    • 如果 checkboxpreference 为真 - 寻找 wifi
    • 如果 wifi 为真 - 注册接收器

如果 wifi 或 checkboxpreference 变为“false”,则还需要取消注册接收器。

4

2 回答 2

0

蒂姆的回答是正确的,但没有得到很好的解释。你需要OnSharedPreferenceChangeListener在你的类中实现:

class Prefs extends PreferenceActivity implements OnSharedPreferenceChangeListener {

这样做会“迫使”您实施public void onSharedPreferenceChanged(). 您可以在此处对用户所做的任何更改做出反应:

public void onSharedPreferenceChanged( SharedPreferences pref, String key) {

    if ( key == "receiversToggle" ){

        if ( pref.getBoolean( "receiversToggle", false ) ) enableReceivers();
        else disableReceivers();
    }
}

一旦你设置了这些方法,你就可以按照 Tim 在你的onCreate()方法中解释的那样注册监听器:

getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
于 2011-03-06T04:27:36.703 回答
0

几天前我也有同样的问题,最后我在 if 语句中使用了 CheckBoxPreference。

我用这段代码做到了:

prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);

然后,当我不得不使用 CheckBoxPreference 时,我这样做了:

if(prefs.getBoolean("degrees", true)) {

} else {

}
于 2011-03-05T23:42:08.897 回答