即使存在值,也无法获取共享首选项值



每当我尝试从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获取,这是一个错误。

相关内容

  • 没有找到相关文章

最新更新