- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我现在正在为我的应用创建一个偏好页面
在 API-14 之后,switchpreference 可用。我想用它来替换 API14+ 设备上的复选框首选项
很容易使用res/xml
和res/xml-14
获取正确的xml资源
但是在编码部分,根据API切换preference并不是那么方便。
public class SettingActivity extends PreferenceActivity {
private CheckBoxPreference enable;
private SwitchPreference enablev14;
@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
if (Build.VERSION.SDK_INT < 14)
enable = (CheckBoxPreference) findPreference(key_enable);
else
enablev14 = (SwitchPreference) findPreference(key_enable);
}
...
}
现在我的方法是用if-clause来检查Build.VERSION
,并得到相应的对象来处理它。但是管理代码非常不方便和困难。有没有人有更聪明的方法来做到这一点?
最佳答案
也许你可以为你的 SwitchPreference 和 CheckBoxPreference xml 设置一个 android:key
属性,就像这样:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:defaultValue="true" />
</PreferenceScreen>
和
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:defaultValue="true" />
</PreferenceScreen>
然后您可以检查此键在您的代码中是否返回 true 或 false,如下所示:
public class SettingActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
PreferenceManager preferenceManager = getPreferenceManager();
if (preferenceManager.getSharedPreferences().getBoolean("pref_sync", true)){
// Your switch is on
} else {
// Your switch is off
}
...
}
希望这对你有用。
关于java - 代码中的 SwitchPreference 和 CheckBoxPreference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18414267/
我有这个偏好 现在, 在我的 PreferenceActivity 中,显然选中的值没有保留: public class My
我想实现一个由两部分组成的偏好屏幕。如果单击复选框,则第一个类别应锁定,第二个类别应解锁。如果不是,则反转。现在我看到它只有在我去之前的 Activity 然后去新的(sharedPreference
我有 PreferenceScreen 包含 CheckBoxPreference ,它在 list 中引用 PreferencesTheme ,它的标题文本很长,所以它出现在单行中,并且在行尾剪切单
我有一个复选框和一个 ListPreference,我想通过复选框禁用/启用 ListPreference。我读了很多书,发现只有使用 java(而不是 xml)才有可能。这是对的吗?现在,在读取“c
我目前正在使用 Web 服务中的内容动态构建带有复选框的行列表。但是,此 ListView 需要完成 PreferenceActivity 所能完成的大部分工作。 我不知道行数,因为内容是动态的,所以
我有带有一些 PreferenceCheckBox 的 PreferenceScreen。我想更改标题和摘要的 textColor 和 textSize,以及选中和取消选中 CheckBox 的图像。
我的 xml 文件中有以下首选项: 我想制作我自己的自定义复选框,所以正如您在上面看到的,我给了这个首选项“android:widgetLayout”参数,它链接到这个文件: 问题:使用 (wi
我有一个 CheckBoxPreference 并且我希望它被默认选中;但它不工作。 这是我的代码: 在我的 extends Application 类中: @Override public void
我的首选项屏幕中有三个复选框。我想让用户一次只选择一个复选框。我如何实现这一目标? 提前致谢。 最佳答案 您需要创建一个 onpreferenceChangelistener: prefChangeL
我的 CheckBoxPreference 有以下 XML 代码: 但是当我在代码中检索首选项时,值是 false. sharedPreferences = PreferenceManager.ge
我设置了几个 CheckBoxPreferences,我的偏好类扩展了 PreferenceActivity 并实现了 OnSharedPreferenceChangeListener这就是我用来回应
几天来我一直在使用checkBoxPreference, 想通了: 如何使用 checkBoxPreference 显示图标, 如何改变标题和摘要的颜色 现在,我需要添加一个按钮而不是图标。所以这里的
在我的应用程序设置 Activity 中声明了 CheckboxPreference 后,在行 'val mCheckBoxPreference = findPreference("preferenc
我想从 CheckBoxPreference 中获取值,我在 Convert/res/xml/settings.xml 中定义了它,如下所示: 我的问题是如何在我的 Main
我想为 CheckBoxPreference 设置字体。我知道我们可以使用 setTypeface 方法为 CheckBox 设置字体。但是,CheckBoxPreference 类没有字体方法。 谁
我想要一个复选框首选项,如果用户按下实际文本(而不是右边的复选框),它会将用户带到一个新的(子)首选项屏幕。 就像设置 -> 无线 -> 移动网络设置 -> 接入点名称下的控件一样。 最佳答案 两种可
我正在尝试使用复选框控件创建首选项屏幕。 我想在它发生变化时得到这个 bool 值。 在我的应用程序中,我已经完成了如下实现 OnSharedPreferenceChangeListener pu
我需要动态设置/取消设置监听器以响应 Preference CheckBox用户设置更改。 我见过的一种方法是使用 onSharedPreferenceChanged()并检查该复选框的键。 但不知何
我正在尝试使用 fragment 构建我的 PreferenceActivity。我有一个包含两个 CheckBoxPreferences 的 PreferenceFragment: 我的 Fra
您好,我正在优先处理消息设置。 我正在尝试更改 CheckboxPreference 的 android:title 和 android:summary 文本字体大小。 为此我正在尝试下面的代码
我是一名优秀的程序员,十分优秀!