Android 在使用SharedReferences期间获取java.lang.ClassCastException
我在应用程序中使用Android 在使用SharedReferences期间获取java.lang.ClassCastException,android,sharedpreferences,classcastexception,Android,Sharedpreferences,Classcastexception,我在应用程序中使用SharedReferences来保存小的Integer数据。但是我在这行中得到了ClassCastException int number = mySharedPref.getInt("numberOne",0); 这是我的密码 存储数据 mySharedPref=getSharedPreferences("MyPref",Context.MODE_PRIVATE); SharedPreferences.Editor editor = myShare
SharedReferences
来保存小的Integer
数据。但是我在这行中得到了ClassCastException
int number = mySharedPref.getInt("numberOne",0);
这是我的密码
存储数据
mySharedPref=getSharedPreferences("MyPref",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = mySharedPref.edit();
editor.putInt("numberOne",myInteger);
获取数据
mySharedPref = getSharedPreferences("MyPref",Context.MODE_PRIVATE);
int number= mySharedPref.getInt("numberOne",0);
display(number);
试试这个
存储数据
public static void setInteger(Context context, String key, Integer Value) {
sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
SharedPreferences.Editor sEdit = sharedPreferences.edit();
sEdit.putInt(key, Value);
sEdit.commit();
}
获取数据
public static Integer getInteger(Context context, String key) {
sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
Integer value = sharedPreferences.getInt(key, 0);
return value;
}
我认为问题在于您没有提交存储在
SharedReferences
中的数据。
所以你应该做一个
editor.commit();
存储数据时。您必须调用
commit()
方法将数据更改保存在SharedReferences
中。
下面是获取数据的方法
private void showData() {
SharedPreferences sharedPreferences = getSharedPreferences("MyFile", Context.MODE_PRIVATE);
int number = sharedPreferences.getInt("numberOne", 0);
display(number);
}
下面是获取保存方法
private void saveData(int value) {
SharedPreferences sharedPreferences = getSharedPreferences("MyFile", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("numberOne", value);
editor.commit();
}
你能发布你的例外情况吗。很抱歉,我在问题中没有提到这一点。我使用这行代码'int number=mySharedPref.getInt(“numberOne”,0);`在
onStart()
方法中。因此,当我打开应用程序时,它会崩溃。哦,那么你应该将它移动到onCreate()。我想保存一个整数,这样当我重新打开我的应用程序时,我可以找到它。没问题。你可以在应用程序的splashscreen的onCreate中检索它。将共享的pref代码从onstart移动到onCreate,这样可以避免任何类型的全局数据。不过,如果需要在整个应用程序中访问共享首选项值,则可以优先访问全局数据