与Preference先关的控件主要有:CheckBoxPrenference,ListPreference,EditTextPreference,PreferenceCategory,PreferenceScreen等,当你在你的xml中,布局了一个Preference,如下:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<cmcc.kvpioneer.ui.control.KVCheckboxPrefer
android:key="PREF_SHOWNOTIFY_ICON"
android:title="显示通知栏图标"
android:defaultValue="true"
/>
<cmcc.kvpioneer.ui.control.KVCheckboxPrefer
android:key="PREF_REALTIME_MONITOR"
android:title="实时监控"
android:defaultValue="true"
/>
<cmcc.kvpioneer.ui.control.KVCheckboxPrefer
android:key="PREF_TASK_KILL"
android:title="定期云扫描"
android:defaultValue="true"
/>
<cmcc.kvpioneer.ui.control.KVCheckboxPrefer
android:key="PREF_VERSION_UPGRADE"
android:title="版本升级"
android:defaultValue="true"
/>
</PreferenceScreen>
当你第一次运行与这个xml相关的ACTIVITY时候,那么会在data/data/应用程序列表/~.xml中生成相应的属性值,那么这个时候,如果你把KVCheckboxPrefer改成ListPreference,然后重新运行,就会出现错我,java.long.classcastexception,而引起的原因就是当编译器存放key名为PREF_VERSION_UPGRADE,类型为ListPreference的值的时候,发现已经有一个类型为KVCheckboxPrefer的具有同样Key值,所以会报异常,解决办法就是重新命名key,很简单,困扰了我一上午,囧!
http://blog.csdn.net/ssstudio/article/details/6232202
kkk