2017-10-18 429 views
1

我想從共享首選項加載布爾值。首次啓動時,它應該爲TRUE,因爲我從未將它保存到共享首選項。但是,我不知何故變得虛假。共享首選項不正確gettingBoolean

查看下面的代碼。

settings = context.getSharedPreferences(SAVED_PREFERENCES, 0); 
isFirstLaunch = settings.getBoolean(FIRST_LAUNCH, true); 
Log.d(TAG, "loadIsFirstLaunch: " + isFirstLaunch); 

p.s.我在100%之前沒有在共享偏好設置中保存FIRST_LAUNCH值。

UPD1我已經用空項目重複檢查 - 代碼工作正常。共享首選項使用布爾類,而不是布爾基元類型。所以不是這種情況,默認情況下布爾值爲false。另外根據調試,我的共享首選項在啓動時包含FIRST_LAUNCH值。所以看看它是如何到達那裏。

UPD2我終於卡住了。刪除了FirstLaunch的所有提示,但在另一個讀取其他值的調用發生時,它仍然以某種方式出現在SharedPreferences中。所以問題是 - 我如何擺脫共享偏好中保存的值。 http://take.ms/Rr0Xf

UPD3我已經改名爲我保存的首選項文件和它的工作。所以問題是,即使在應用程序全新安裝之後,SOMEHOW設備仍然保存着保存的喜好信息。 PFM。

+0

分享您的完整代碼,用於插入和閱讀偏好數據。 –

+1

默認值必須爲true。 –

+1

沒有人可以幫助你,直到你提供足夠的信息源代碼足夠的問題.. –

回答

0

獲得的價值是什麼所以最後我發現問題和解決方案。

在Android M及以上版本中,谷歌在谷歌驅動程序中保留應用程序備份,這就是爲什麼即使在重新安裝共享首選項後,恢復。我禁用了備份。

項目清單文件在應用程序部分設置android:allowBackup =「true」爲false。

+0

確實這是一個糟糕的特徵。 – greenapps

1

由於點數較少,我無法回答您的問題因此,如果您100%確定您沒有爲FIRST_LAUNCH設置任何值,請嘗試清除應用程序的數據2.您能否提供完整的源代碼

而且@miller如果有一個以上的sharedpreferences

什麼
1

它,因爲默認情況下,布爾值,並將其值設置爲false ..只需要真實價值時,有來自返回空值共享首選項,但布爾值必須具有true或false值......它不支持空值。

,所以你需要做的是在會議布爾值設置爲true編程在裝貨前的類,然後從會話

+0

這裏的大胡話。 – greenapps