Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用复选框启用接收器_Android_Android Service - Fatal编程技术网

Android 使用复选框启用接收器

Android 使用复选框启用接收器,android,android-service,Android,Android Service,我想在我的首选项活动中添加一个复选框,用于启用或禁用接收器。这适用于在引导完成后在后台运行的服务,这取决于两件事:1)首选项是否正确,2)是否启用wifi 所以它会像这样工作 用户打开手机 引导完成检查接收器是否启用(由checkboxpreference设置) 如果checkboxpreference为true-查找wifi 如果wifi为真-注册接收器 如果wifi或checkboxpreference变为“false”,则还需要取消注册接收器。几天前我也有同样的问题,最后我在if语句中

我想在我的首选项活动中添加一个复选框,用于启用或禁用接收器。这适用于在引导完成后在后台运行的服务,这取决于两件事:1)首选项是否正确,2)是否启用wifi

所以它会像这样工作

  • 用户打开手机
  • 引导完成检查接收器是否启用(由checkboxpreference设置)
    • 如果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);