Android 使用复选框启用接收器
我想在我的首选项活动中添加一个复选框,用于启用或禁用接收器。这适用于在引导完成后在后台运行的服务,这取决于两件事:1)首选项是否正确,2)是否启用wifi 所以它会像这样工作Android 使用复选框启用接收器,android,android-service,Android,Android Service,我想在我的首选项活动中添加一个复选框,用于启用或禁用接收器。这适用于在引导完成后在后台运行的服务,这取决于两件事:1)首选项是否正确,2)是否启用wifi 所以它会像这样工作 用户打开手机 引导完成检查接收器是否启用(由checkboxpreference设置) 如果checkboxpreference为true-查找wifi 如果wifi为真-注册接收器 如果wifi或checkboxpreference变为“false”,则还需要取消注册接收器。几天前我也有同样的问题,最后我在if语句中
- 如果checkboxpreference为true-查找wifi
- 如果wifi为真-注册接收器
如果wifi或checkboxpreference变为“false”,则还需要取消注册接收器。几天前我也有同样的问题,最后我在if语句中使用了checkboxpreference 我是用这个代码做的:
prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
当我不得不使用CheckBoxPreference时,我是这样做的:
if(prefs.getBoolean("degrees", true)) {
} else {
}
蒂姆的回答是正确的,但解释得不好。您需要在类中实现
OnSharedPreferenceChangeListener
:
class Prefs extends PreferenceActivity implements OnSharedPreferenceChangeListener {
这样做将“强制”您在SharedPreferenceChanged()上实现public void
。在这里,您可以对用户所做的任何更改作出反应:
public void onSharedPreferenceChanged( SharedPreferences pref, String key) {
if ( key == "receiversToggle" ){
if ( pref.getBoolean( "receiversToggle", false ) ) enableReceivers();
else disableReceivers();
}
}
一旦设置了这些方法,就可以按照onCreate()
方法中的说明注册侦听器:
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);