即使价值存在,也无法获得共享偏好价值

时间:2013-09-26 04:09:39

标签: android sharedpreferences preferences

任何时候我尝试从getInt()我的应用程序崩溃SharedPreference,但我可以作为地图迭代首选项。例如,请参阅下面的已加星标的行:

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);
}

显然,我的prefs正在被保存(这个样本和工作偏好屏幕可以在多个活动中得到证明)。我在尝试访问getDefaultSharedPreferences之前调用了super.onCreate()。

我应该考虑什么来理解为什么这段代码不起作用?为什么地图会起作用而不是“getInt”方法呢?我注意到如果我试图明确地转换键值,应用程序也会崩溃...我必须先将其转换为toString。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

看起来与score_format密钥相关联的对象是String,但您尝试将其作为int获取,这是一个错误。

答案 1 :(得分:0)

如果您不想解析,请确保您使用putExtra放入意图的分数是int类型,而不是字符串。