关于PreferenceFragment中使用setSharedPreferencesName后ListPreference报错的问题
我有一个设置的Activity,使用PreferenceFragment实现,在Fragment中使用getPreferenceManager().setSharedPreferencesName("settings_preference")来改变默认保存设置的文件,代码如下:@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.getPreferenceManager().setSharedPreferencesName("settings_preference");
//this.getPreferenceManager().setSharedPreferencesMode(Context.MODE_PRIVATE);
addPreferencesFromResource(R.xml.preferences);
}
preferences文件如下:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:title="GPS定位"
android:enabled="true"
android:key="openGPS"
android:summary="是否打开GPS定位"
android:selectable="false"
android:defaultValue="false"/>
<ListPreference
android:title="定位频率"
android:key="@string/locFrequence"
android:entries="@array/auto_update_frequency_entry"
android:entryValues="@array/auto_update_frequency_value"
/>
这样使用了ListPreference 之后,在界面上打开设置的Activity时候就会报错:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gmy.myrouting/com.gmy.myrouting.SettingsActivity}: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
定位到是:addPreferencesFromResource(R.xml.preferences);这一行代码出错。
但是,当我注释掉代码this.getPreferenceManager().setSharedPreferencesName("settings_preference");时候,不报错,并且当我去掉ListPreference标签的时候,也不报错。不知到该怎么做了。大家帮帮忙吧!谢过了.... PreferenceFragment android --------------------编程问答-------------------- 怎么没人解答的啊
补充:移动开发 , Android