PreferenceActivity做了用户设置,挺好用的。但是遇到一个问题,总是挂掉。
        我在其他的activity里是这样使用的。
public static long get_stat_frq(Context context){
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
return sp.getLong(prefs_stat_frq_, 600);
}12-31 00:37:08.549: E/AndroidRuntime(4119):  at java.lang.reflect.Method.invoke(Method.java:521)
12-31 00:37:08.549: E/AndroidRuntime(4119):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-31 00:37:08.549: E/AndroidRuntime(4119):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-31 00:37:08.549: E/AndroidRuntime(4119):  at dalvik.system.NativeStart.main(Native Method)
12-31 00:37:08.549: E/AndroidRuntime(4119): Caused by: java.lang.ClassCastException: java.lang.String
12-31 00:37:08.549: E/AndroidRuntime(4119):  at android.app.ContextImpl$SharedPreferencesImpl.getLong(ContextImpl.java:2712)
12-31 00:37:08.549: E/AndroidRuntime(4119):  at matthew.FlowMonitor.UserPreferenceActivity.get_stat_frq(UserPreferenceActivity.java:39)
        

解决方案 »

  1.   

    你自己存的数据是什么类型的 如过存的 就是long型的,可能 是 不支持 int的 你就用 string的呗 也一样 int+""就ok了。sharedpreference 就是配置文件
      

  2.   

    普通的sharedpreference没有问题。
    配置参数在PreferenceActivity内部使用没有任何问题,而且xml文件里的值都ok的。
    为了其他地方也能用我在PreferenceActivity上写了些静态方法。PreferenceManager.getDefaultSharedPreferences(context);怀疑这里拿到的不是sharedpreference的那个。
      

  3.   

    可能你传的那个context只是代表当前页面的,你传一个代表总个页面的getApplicationContext()试试看
      

  4.   

    真的是数据类型的原因,用getstring回来自己转就没问题了。
    这悲催的。