我正在编写一个通过检查或取消选中启动或停止服务的应用程序,CheckBoxPreference
我试图找到一些信息,如示例代码或教程.但我还没找到.如何通过检查或取消选中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); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用片段构建我的PreferenceActivity.我有一个包含两个CheckBoxPreferences的PreferenceFragment:
<CheckBoxPreference
android:key="pref_bfp_scale"
android:title="@string/PREF_BFP_scale_title"
android:defaultValue="false" />
<CheckBoxPreference
android:key="pref_bfp_navy"
android:title="@string/PREF_BFP_navy_title"
android:defaultValue="true" />
Run Code Online (Sandbox Code Playgroud)
我的FragmentSettingsActivity:
public class FragmentSettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public static class BodyFatPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_body_fat);
bindPrefSumtoValListener(findPreference("pref_bfp_scale"), "Boolean");
bindPrefSumtoValListener(findPreference("pref_bfp_navy"), "Boolean");
}
}
private static Preference.OnPreferenceChangeListener prefSumtoValListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String stringValue = value.toString();
log("Pref changed - Value: " + stringValue);
if (preference instanceof CheckBoxPreference) {
Map<String, …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
<PreferenceCategory
android:summary="Fade information"
android:title="Fade Effects">
<CheckBoxPreference
android:title="Fade In/Out"
android:defaultValue="false"
android:key="fadeIn"/>
<CheckBoxPreference
android:title="Heartbeat"
android:defaultValue="false"
android:key="heartbeat" />
<CheckBoxPreference
android:title="Pulse"
android:defaultValue="false"
android:key="pulse" />
<CheckBoxPreference
android:title="None"
android:defaultValue="true"
android:key="none" />
</PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)
我基本上试图弄清楚如何使这些CheckBox显示为原样,但让用户无法点击它们.
我有一个屏幕,您可以在其中为我的Android应用程序启用/禁用模块.
为此,我使用CheckboxPreference屏幕.这一切都很好,但如果添加的描述比2行更长,则摘要字段会被切断.
假设每个模块有4-5行描述,我想在帮助窗口中显示它.
我尝试将click事件绑定到CheckboxPreference,但是这会触发整行,因此不仅在单击复选框时,还有更多,无论您在哪一行单击该复选框,都会切换.
所以现在我想知道这是否可以解决.因此,如果用户需要更多信息,只需点击文本并打开帮助程序,如果要切换设置,则会点击复选框.
你会怎么做?如果他们确实有效,我也会对其他想法持开放态度.
我想实现一个2部分首选项屏幕.如果单击复选框,则第一个类别应锁定,第二个类别解锁.如果不是,反过来.现在我看到它只有在我之前的活动然后转到新的(sharedPreferences)时才有效.我应该覆盖什么样的倾听者以及如何?
我CheckBoxPreference在我PreferenceActivity用来设置一个值.稍后,我想从Receiver和/或Service检查该值.findPreference()方法不能从该上下文中获得.我知道,SharedPreferences无论如何都存储了这个偏好值,但关键是什么?我怎样才能获得复选框的值?
每次切换到首选项活动时,都会遇到运行时错误,即我的应用程序.我正在尝试学习Android编程,我设法解决了我遇到的问题,但经过大量时间寻找帮助后,我无法理解我做错了什么.
这是Settings.java的代码:
package com.wisp.sudokuapp;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Settings extends PreferenceActivity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
Run Code Online (Sandbox Code Playgroud)
我的settings.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckboxPreference
android:key="hints"
android:title="@string/settings_hints_title"
android:summary="@string/settings_hints_summary"
android:defaultValue="true" />
<CheckboxPreference
android:key="music"
android:title="@string/settings_music_title"
android:summary="@string/settings_music_summary"
android:defaultValue="true" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
我的清单:
(...)
<activity android:name="com.wisp.sudokuapp.Settings"
android:label="@string/settings_title">
</activity>
(...)
Run Code Online (Sandbox Code Playgroud)
和Logcat:
03-25 17:22:22.637: W/dalvikvm(440): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-25 17:22:22.687: E/AndroidRuntime(440): FATAL EXCEPTION: main
03-25 17:22:22.687: E/AndroidRuntime(440): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wisp.sudokuapp/com.wisp.sudokuapp.Settings}: android.view.InflateException: Binary …Run Code Online (Sandbox Code Playgroud)