2015-04-21 59 views
0

允許以下內容嗎?爲什麼我不能檢查SharedPreferences引用對象是否爲空?

SharedPreferences prefInfo = getActivity().getSharedPreferences("LogonData", Context.MODE_PRIVATE); 

if (prefInfo != null) { 
    String savedName = prefInfo.getString("myEmailID", "NO DATA"); 
} 

看到,這是最好先檢查,如果做getString()SharedPreferences對象不爲空,但我很好奇,爲什麼我不能先檢查prefInfo引用然後得到的數據?我討厭修理東西而不明白爲什麼?

我的應用程序NullPointerException墜毀在第一線

SharedPreferences prefInfo = getActivity().getSharedPreferences("LogonData", Context.MODE_PRIVATE); 

感謝您的幫助

+0

我認爲'getActivity()'返回null,所以這就是爲什麼它在第一行崩潰 – Guillaume

+0

看起來getActivity()是空的,這可能表明你做錯了什麼。你的代碼在哪裏調用? –

+0

@ChrisStratton我現在看到我的錯誤,謝謝你的擡頭。 – AhabLives

回答

0

您被告知獲取字符串然後檢查null的原因是SharedPreferences是訪問偏好數據的接口,而不是保存數據本身的類。因此,SharedPreferences只是一種可供您訪問數據的手段。它並不保證這些數據實際存在。

http://developer.android.com/reference/android/content/SharedPreferences.html

至於您的特定錯誤,因爲你調用一個方法,這只是返回一個接口,你必須調用一個空的對象上的方法。您的getActivity()失敗。

0

getSharedPreferences()總是以1弦參數的時關聯的名稱返回SharedPreference。它永遠不會返回null

你是從getActivity()越來越null肯定的,這就是爲什麼你越來越NullPointerException。從哪個回調方法的片段中,你正在調用/執行這個代碼塊?

相關問題