【发布时间】:2013-09-26 04:09:39
【问题描述】:
任何时候我尝试从SharedPreference 到getInt(),我的应用程序都会崩溃,但我可以将首选项作为地图进行迭代。例如,请参阅下面带星号的行:
private void loadPref(){
myPrefs = PreferenceManager.getDefaultSharedPreferences(this);
int sf = DEFAULT_VALUE;
Map<String,?> keys = myPrefs.getAll();
for(Map.Entry<String,?> entry : keys.entrySet()){
if (entry.getKey().contentEquals("score_format"))
// this works: //*****
sf = Integer.parseInt(entry.getValue().toString()); //*****
}
// but this does not: //*****
// sf = myPrefs.getInt("score_format", DEFAULT_VALUE); //*****
setScoreFormat(sf);
}
很明显,我的首选项已被保存(此示例和跨多个活动的工作首选项屏幕证明了这一点)。我在尝试访问 getDefaultSharedPreferences 之前调用了 super.onCreate()。
我应该考虑什么来理解为什么这段代码不起作用?为什么地图可以工作,但“getInt”方法却不行?我确实注意到,如果我尝试显式转换键值,应用程序也会崩溃……我必须先将它转换为字符串。
我错过了什么?
【问题讨论】:
-
可以贴一下异常的logcat吗?以及
DEFAULT_VALUE的定义?
标签: android sharedpreferences preferences