与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