2012-07-21 50 views
0

在我的應用程序中,我收到一個錯誤,使我無法加載SharedPreferences。發生這種情況的原因是,當應用程序因殺死任務而死亡(任務殺手或電話重啓)時,手機無法再次加載所有內容。現在我使用這種技術:加載SharedPreference高效

if ((sharedPreferences.getString("EXA1", "")) == "Example1"){ 

//do something 
} 
else if ((sharedPreferences.getString("EXA1", "")) == "Example2"){ 

//do something 
} 
else if ((sharedPreferences.getString("EXA1", "")) == "Example3"){ 

//do something 
} 
else{ 
//do nothing 
} 

因爲我得到了大約75 else if語句我的電話拒絕該應用程序被殺害後加載它們。是否有裝載任何更有效的方法,然後做一些事情(注:我有一個以上的單SharedPreference)?

+0

你說你有多個首選項,但在做其他事情之前,我仍然會將它們讀入變量中 - 如果...在上面提供的示例中,您加載了相同的pref 3次。 – Alxandr 2012-07-21 15:34:06

+0

我得到了五個不同的「EXA1」,如「EXA2」,「EXA3」等。你能告訴我一個正在使用的變量的例子嗎? – Magakahn 2012-07-21 15:37:30

+0

[SharedPreferences可能重複如果使用多個不起作用?](http://stackoverflow.com/questions/11544275/sharedpreferences-does-not-work-if-many-is-used) – taxeeta 2013-07-24 03:36:12

回答

2

使用strObject.equals( 「的MatchString」)方法

參見:

if ((sharedPreferences.getString("EXA1", "")).equals("Example1")){ 
              ^^^^^^^^^^^^^^^^^^^^ 

//do something 
} 
else if ((sharedPreferences.getString("EXA1", "")).equals("Example2")){ 

//do something 
} 
else if ((sharedPreferences.getString("EXA1", "")).equals("Example3")){ 

//do something 
} 
else{ 
//do nothing 
} 

您不能使用==運算符比較兩個字符串對象,因爲它不是基本數據類型。

+0

這將刪除我的錯誤?它似乎仍然完全一樣,只有你用==代替了==。 – Magakahn 2012-07-21 15:38:11

+0

你爲什麼問我?!!!,我只是按照我所知的方式給你,現在你的工作就是在你的代碼端檢查它。 – 2012-07-21 15:40:00

+0

感謝它的芬蘭作品!你救了我的屁股。 – Magakahn 2012-07-21 15:45:56