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,这样可以避免任何类型的全局数据。不过,如果需要在整个应用程序中访问共享首选项值,则可以优先访问全局数据