Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.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 通过选中/取消选中CheckBoxPreference启动/停止服务_Android_Preferenceactivity_Checkboxpreference - Fatal编程技术网

Android 通过选中/取消选中CheckBoxPreference启动/停止服务

Android 通过选中/取消选中CheckBoxPreference启动/停止服务,android,preferenceactivity,checkboxpreference,Android,Preferenceactivity,Checkboxpreference,我正在编写一个应用程序,通过选中或取消选中CheckBoxPreference 我试图找到一些信息,例如示例代码或教程。但我还没找到。 如何通过选中或取消选中来启动或停止服务CheckBoxPreference 哪个在首选项活动中?我想在“service_toggle”键为true时启动服务,在“service_toggle”键为false时停止服务通过选中/取消选中CheckBoxPreference,是否有关于启动/停止服务的示例代码或教程 这是我的密码: Settings.java s

我正在编写一个应用程序,通过选中或取消选中
CheckBoxPreference
我试图找到一些信息,例如示例代码或教程。但我还没找到。 如何通过选中或取消选中来启动或停止服务
CheckBoxPreference
哪个在
首选项活动中?我想在“service_toggle”键为true时启动服务,在“service_toggle”键为false时停止服务通过选中/取消选中
CheckBoxPreference
,是否有关于启动/停止服务的示例代码或教程

这是我的密码:


Settings.java


settings.xml


似乎您已经有了检测某人点击偏好的代码。只需查看其值,然后调用startService或stopService。@Gabetechan但我想启动或停止服务取决于“服务切换”复选框首选项值不要这样做。用户[此][1]方法。[1] :查看我的答案是否对您有效..小心-您应该保留对OnPreferenceChangeListener的引用,否则它可能会被垃圾收集。见文件:
package kr.hybdms.sidepanel;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;

import com.actionbarsherlock.app.SherlockPreferenceActivity;
import kr.hybdms.sidepanel.R;

public class Settings extends SherlockPreferenceActivity implements OnPreferenceClickListener{

      @SuppressWarnings("deprecation")
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);



        Preference pAppName = (Preference)findPreference("blog_intent");
        Preference pAppVersion = (Preference)findPreference("appinfo_intent");

        pAppName.setOnPreferenceClickListener(this);
        pAppVersion.setOnPreferenceClickListener(this);
    }

    @Override
    public boolean onPreferenceClick(Preference preference)
    {

        if(preference.getKey().equals("blog_intent"))
        {
            Intent blog = new Intent(Intent.ACTION_VIEW);
            blog.setData(Uri.parse("http://hybdms.blogspot.kr"));
            startActivity(blog);
        }

        else if(preference.getKey().equals("appinfo_intent"))
        {
            Intent appinfo = new Intent(Settings.this, Appinfo.class); 
             startActivity(appinfo);
        }
        return false;
    }

}
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference android:key="service_toggle" android:title="@string/pref_service_toggle" android:summary="@string/pref_service_toggle_sub" android:defaultValue="false"/>
    <CheckBoxPreference android:key="autostart_toggle" android:title="@string/pref_auto" android:summary="@string/pref_auto_sub" android:defaultValue="false" android:selectable="false" android:enabled="false"/>
    <Preference android:key="guide_intent" android:selectable="false" android:summary="@string/pref_guide_sub" android:title="@string/pref_guide" android:enabled="false"/>
    <Preference android:key="blog_intent" android:summary="@string/pref_blog_sub" android:title="@string/pref_blog"/>
    <Preference android:key="appinfo_intent" android:summary="@string/pref_appinfo_sub" android:title="@string/pref_appinfo"/>

</PreferenceScreen>
package kr.hybdms.sidepanel;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.widget.ImageView;
import android.graphics.PixelFormat;

public class TouchDetectService extends Service {
    private ImageView mTouchDetector;                           
    private WindowManager.LayoutParams mParams;     
    private WindowManager mWindowManager;       

    private OnTouchListener mViewTouchListener = new OnTouchListener() {
        @Override public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()) {

                case MotionEvent.ACTION_MOVE:

                    Intent lsp = new Intent(getBaseContext(), LeftSidePanel.class);
                    lsp.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getApplication().startActivity(lsp);
                    break;
            }

            return true;
        }
    };

    @Override
    public IBinder onBind(Intent arg0) { return null; }

    @Override
    public void onCreate() {
        super.onCreate();

            mTouchDetector = new ImageView(this);                                         
            mTouchDetector.setImageResource(R.drawable.detector);
            mTouchDetector.setOnTouchListener(mViewTouchListener);            

            mParams = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,  
                PixelFormat.TRANSLUCENT);                                        
            mParams.gravity = Gravity.LEFT | Gravity.CENTER;                  

            mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);  
            mWindowManager.addView(mTouchDetector, mParams);      permission 
        }

    @Override
    public void onDestroy() {
        if(mWindowManager != null) {        
            if(mTouchDetector != null) mWindowManager.removeView(mTouchDetector);
        }
        super.onDestroy();
    }
public class Settings extends SherlockPreferenceActivity implements OnPreferenceClickListener, OnPreferenceChangeListener {

      @SuppressWarnings("deprecation")
      @Override
      public void onCreate(Bundle savedInstanceState) {
        .........

        CheckBoxPreference chkServiceToogle = (CheckBoxPreference)findPreference("service_toggle");
        chkServiceToogle.setOnPreferenceChangeListener(this);
    }

    @Override
    public boolean onPreferenceChange(Preference preference, String key)
    {
        if (key.equals("service_toggle")) {
            if(sharedPreferences.getBoolean(key, false)) {
                Intent intent = new Intent(getApplicationContext(), TouchDetectService.class);
                startService(intent);
            } else {
                Intent intent = new Intent(getApplicationContext(), TouchDetectService.class);
                stopService(intent);
            }
        }
    }
........
}
CheckBoxPreference checkboxPref = (CheckBoxPreference)getPreferenceManager().findPreference("service_toggle");

checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {            

    public boolean onPreferenceChange(Preference preference, Object newValue) {

        boolean myValue = (Boolean) newValue;

        if(myValue)
            startService(new Intent(Settings.this, TouchDetectService.class));
        else
            stopService(new Intent(Settings.this, TouchDetectService.class));

        return true;
    }
});