簡體   English   中英

Android-SharedPreferences-無法獲得我的價值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM