Java Android-SharedReferences-can';我得不到我的价值

Java Android-SharedReferences-can';我得不到我的价值,java,android,sdk,key,Java,Android,Sdk,Key,我有一个很奇怪的问题 我使用键/值对保存应用程序数据。而且效果很好!我可以保存并获取字符串值和布尔值 我无法获取的唯一值类型是整数 让我描述一下情况: 在一个活动中,我通过以下方式保存密钥/值对: addElement(getApplicationContext(), "all_tasks", Integer.parseInt(allTasks.getText().toString())); 我从KeyValueStorageHelper.java文件中使用此方法: /* Записать н

我有一个很奇怪的问题

我使用键/值对保存应用程序数据。而且效果很好!我可以保存并获取字符串值和布尔值

我无法获取的唯一值类型是整数

让我描述一下情况:

在一个活动中,我通过以下方式保存密钥/值对:

addElement(getApplicationContext(), "all_tasks", Integer.parseInt(allTasks.getText().toString()));
我从KeyValueStorageHelper.java文件中使用此方法:

/* Записать новую целочисленную пару */
public static void addElement(Context context, String key, int value) {
    ContextWrapper contextWrapper = new ContextWrapper(context);
    SharedPreferences.Editor sharedPreferences = contextWrapper.getSharedPreferences("MentalCalculationSaveData", ContextWrapper.MODE_PRIVATE).edit();
    sharedPreferences.putInt(key, value);
    sharedPreferences.apply();
}
之后,在另一项活动中,我尝试这样做,奇怪的是:

if (isKeyExists(getApplicationContext(), "all_tasks"))
        Toast.makeText(getApplicationContext(), getInt(getApplicationContext(), "all_tasks"),Toast.LENGTH_LONG).show();
此代码引发“资源发现异常”。好吧。但这很奇怪。如果没有这样的资源,为什么我的If-else块返回true

在此之后,我建议,这可能不是一个整数键/值对

我试过这个:

Toast.makeText(getApplicationContext(), (int)getFloat(getApplicationContext(), "all_tasks"),Toast.LENGTH_LONG).show();
它会抛出一个异常:

java.lang.Integer cannot be cast to java.lang.Float

那怎么了?当我试图获取我的值时,我的值怎么可能是整数并引发异常?

是否从同一个pref检索共享首选项。在addElement方法中,使用“
mentalculationSaveData
”方法。请确保您使用同一个来检索

还有,您的isKeyExists的实现是什么。您可以尝试使用来检查密钥是否存在


此外,不确定getInt()方法是什么。您可以使用,您应该将键名作为第一个参数,将默认值作为第二个参数。因此,您可以执行类似pref.getInt(“所有任务”,0)的操作,如果不存在值,0将返回。

ResourceNotFoundException在哪里引发?我认为您的代码没有在if块内执行。异常是在if语句的条件下引发的