我使用此功能从Android应用程序中提取共享首选项。但是,我不确定所请求的字段是否存在。如果字段不存在,我应该将代码包装在try catch或getString()
中吗?
public String loadPreferences(String what){
SharedPreferences settings =this.getSharedPreferences("settings", Context.MODE_PRIVATE);
String content =settings.getString(what, "empty");
return content;
}
你应该read documentation of getString here,它清楚地说,
返回首选项值(如果存在)或defValue。如果存在此名称不是String的首选项,则抛出ClassCastException。该值可以为null。
在你的情况下,defValue是“空的”
因此,只有当您尝试返回的值不是指定类型时才有可能出现异常,但它绝不应该是getString()
的情况
如果用“field”表示what
所指定的值,getString()
将不会在你的代码片段中返回null
。它将返回what
所关键的值,如果该首选项没有值,则返回"empty"
。
如果您搜索此链接:https://developer.android.com/reference/android/content/SharedPreferences.html
你会发现这个方法:
getString(String key, String defValue)
这意味着如果您没有使用此密钥在SharedPreferences中启动任何内容,并且您尝试获取此密钥的值,那么它将返回默认值
所以在你的情况下
String content =settings.getString(what, "empty");
对于what
密钥,如果你有这个密钥存储任何东西,如果你想要获得它的值,它将返回你的情况下的"empty"
默认值