
我试图找到一些信息,如示例代码或教程.但我还没找到.
如何通过选中或取消选中CheckBoxPreference来启动或停止服务
在PreferenceActivity中?我想在“service_toggle”键为true时启动服务,并在“service_toggle”键为false时停止服务是否有任何关于启动/停止服务的示例代码或教程通过选中/取消选中CheckBoxPreference?
这是我的代码:
Settings.java
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; }} 的settings.xml
<?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>
touchDetectService.java
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(); }解决方法 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; }}); 总结 以上是内存溢出为你收集整理的android – 通过选中/取消选中CheckBoxPreference来启动/停止服务全部内容,希望文章能够帮你解决android – 通过选中/取消选中CheckBoxPreference来启动/停止服务所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)