[英]Android - SharedPreferences - can't get my value
我有一個很奇怪的問題。
我使用鍵/值對保存我的應用程序數據。 而且效果很好! 我可以保存並獲取字符串值和布爾值。
我無法獲得的唯一值類型是整數
讓我描述一下情況:
在一個活動中,我通過以下方式保存鍵/值對:
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();
此代碼引發“ ResouceNotFound Exception”。 好。 但這很奇怪。 如果沒有這樣的資源,為什么我的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
那怎么了 當我嘗試獲取它時,我的值如何成為Integer並引發異常?
您要從同一偏好中檢索共享首選項嗎? 在您的addElement方法中,使用“ MentalCalculationSaveData
”之一。 確保使用相同的內容進行檢索。
還有isKeyExists的實現是什么。 您可以嘗試使用sharedPreferences的contains方法來檢查密鑰是否存在。
另外,不確定您的getInt()方法是什么。 您可以使用sharedPreferences的getInt() ,您應該將密鑰名稱作為第一個參數,將默認值作為第二個參數。 因此,您可以執行諸如pref.getInt(“ all_tasks”,0)之類的操作,如果不存在任何值,則將返回0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.