我写了一个自定义DialogPreference
,其中包含两个NumberPickers
。在"onDialogClose"
我希望将每个值合并,然后使用“persistLong”存储在SharedPreferences
中。
首选项工作得很好,并且所有内容都按预期调用,但是当我尝试从SharedPreferences
检索值时,似乎没有使用我提供的密钥存储任何内容。
知道可能出现什么问题吗?
答案 0 :(得分:2)
您可能没有提供权利context
,即您检索SharedPreferences
的地方可能使用与您存储新偏好设置的地点不同的上下文。
更简单的方法是在整个应用程序中使用单个PreferenceHelper
类来检索和存储值。
package in.example;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public class PreferencesHelper {
private SharedPreferences prefs;
private SharedPreferences.Editor editor;
// Class constants.
public PreferencesHelper(Context context) {
prefs = PreferenceManager.getDefaultSharedPreferences(context);
editor = prefs.edit();
}
public static PreferencesHelper getInstance(Context context) {
return new PreferencesHelper(context);
}
public Boolean getBoolean(String key) {
return prefs.getBoolean(key, false);
}
public void setBoolean(String key, Boolean value) {
editor.putBoolean(key, value);
editor.commit();
}
public String getString(String key) {
return prefs.getString(key, "");
}
public void setString(String key, String value) {
editor.putString(key, value);
editor.commit();
}
public int getInt(String key) {
return prefs.getInt(key, 0);
}
public void setInt(String key, int value) {
editor.putInt(key, value);
editor.commit();
}
}
现在,您可以通过调用PreferencesHelper.getInstance(context)
轻松获取此类的实例,然后只需调用其方法来存储或检索值。
请注意。上面的示例类返回一个空字符串,false为 如果没有设置或找到值,则为布尔值,0为int值 给定的偏好键。
答案 1 :(得分:0)
如何将context.getApplicationContext()
用于SharedPreferences上下文?