每当我尝试从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"方法却不起作用?我确实注意到,如果我尝试显式转换键值,该应用程序也会崩溃......我必须先将其转换为字符串。
我错过了什么?
不想解析,请确保您使用 putExtra
放入 Intent 的分数是 int 类型,而不是字符串。
看起来用score_format
键关联的对象是一个String
,但您正在尝试将其作为int
获取,这是一个错误。