今天我在Samsung Galaxy Tab A 10.1上发现了一个关于SharedPreferences
我正在拯救长期:
private static final String PREF_IDE_CULTIVO_WORK_REPORT = "ID_CULTIVO_WORK_REPORT";
private static final String PREFNAME = "PREFERENCES";
public static void init(Context context){
sharedPreferences = context.getSharedPreferences(PREFNAME, 0);
editor = sharedPreferences.edit();
}
public static Long getIdCultivoWorkReport(){
if (sharedPreferences == null){
return null;
}
return sharedPreferences.getLong(PREF_IDE_CULTIVO_WORK_REPORT, 0);
}
public static void setIdCultivoWorkReport(Long b){
if (sharedPreferences == null){
return;
}
editor.putLong(PREF_IDE_CULTIVO_WORK_REPORT, b);
editor.commit();
}
在一个班级中我设定了一个值;
PreferenceManager.setIdCultivoWorkReport(Long.valueOf(document.getPlantation().getId()));
在其他课程中,我得到了值:
if (PreferenceManager.getIdCultivoWorkReport() == 0 || PreferenceManager.getIdCultivoWorkReport() == null ) {
allParcelList.addAll(WorkReportController.getParcelsByPlantation(plantationId));
allSowingList.addAll(WorkReportController.getSowingsByPlantation(plantationId));
} else{
//get other values
}
在Galaxy Tab A上我在其他平板电脑模型上崩溃可以正常运行
java.lang.ClassCastException:at android.app.SharedPreferencesImpl.getLong (SharedPreferencesImpl.java:249)at es.app.company.utils.PreferenceManager.getIdCultivoWorkReport (PreferenceManager.java:294)at es.app.company.ui.workreport.WorkReportEditTaskFragment.onActivityCreated (WorkReportEditTaskFragment.java:130)at android.support.v4.app.Fragment.performActivityCreated (Fragment.java:1970)at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1041)at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1197)at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 在android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1562)at android.support.v4.app.FragmentManagerImpl $ 1.run (FragmentManager.java:483)在android.os.Handler.handleCallback (Handler.java:739)在android.os.Handler.dispatchMessage上 (Handler.java:95)在android.os.Looper.loop(Looper.java:148)at android.app.ActivityThread.main(ActivityThread.java:7303)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1230)com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120
我做错了什么?
答案 0 :(得分:0)
如果您更改代码中条目的类型(例如,如果使用的应用的先前版本为editor.putString(PREF_IDE_CULTIVO_WORK_REPORT, "1");
),则会出现此错误
如果您使用getLong()
块实现自己的本地try catch
,则可以解决此问题。
如果您再次卸载然后安装应用程序,则将删除包含sharedPreferences数据的本地文件,并且该选项卡上的问题应该消失。