java – 代码中的SwitchPreference和CheckBoxPreference

前端之家收集整理的这篇文章主要介绍了java – 代码中的SwitchPreference和CheckBoxPreference前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我现在正在为我的应用创建首选项页面

在API-14之后,可以使用switchpreference.我想用它来取代API14设备上的checkBoxpreference

使用res / xml和res / xml-14很容易获得正确的xml资源

然而,在编码部分中,根据API切换偏好并不是那么方便.

  1. public class SettingActivity extends PreferenceActivity {
  2. private CheckBoxPreference enable;
  3. private SwitchPreference enablev14;
  4.  
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. addPreferencesFromResource(R.xml.setting);
  8. if (Build.VERSION.SDK_INT < 14)
  9. enable = (CheckBoxPreference) findPreference(key_enable);
  10. else
  11. enablev14 = (SwitchPreference) findPreference(key_enable);
  12. }
  13. ...
  14. }

现在我的方法是使用if子句检查Build.VERSION并获取相应的对象来处理它.
但是管理代码非常不方便.
有没有人有更聪明的方法呢?

解决方法

也许你可以为你的SwitchPreference和CheckBoxPreference xml设置一个android:key属性,就像这样:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  3. <CheckBoxPreference
  4. android:key="pref_sync"
  5. android:title="@string/pref_sync"
  6. android:defaultValue="true" />
  7. </PreferenceScreen>

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  3. <SwitchPreference
  4. android:key="pref_sync"
  5. android:title="@string/pref_sync"
  6. android:defaultValue="true" />
  7. </PreferenceScreen>

然后你可以检查这个键是否在你的代码中返回true或false,如下所示:

  1. public class SettingActivity extends PreferenceActivity {
  2.  
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. addPreferencesFromResource(R.xml.setting);
  6. PreferenceManager preferenceManager = getPreferenceManager();
  7. if (preferenceManager.getSharedPreferences().getBoolean("pref_sync",true)){
  8. // Your switch is on
  9. } else {
  10. // Your switch is off
  11. }
  12. ...
  13. }

希望这对你有用.

猜你在找的Java相关文章