当前位置:编程学习 > wap >>

关于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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,