2012-07-21 67 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