我有一个包装了 SharedPreferences
功能的工作类:
public class PrefSingleton{
private static PrefSingleton mInstance = null;
private SharedPreferences mMyPreferences;
private PrefSingleton(){
}
public static PrefSingleton getInstance(){
if (mInstance == null) {
mInstance = new PrefSingleton();
}
return mInstance;
}
public void Initialize(Context ctx){
mMyPreferences = PreferenceManager.getDefaultSharedPreferences( ctx );
}
public void writePreferenceString(String key, String value){
SharedPreferences.Editor e = mMyPreferences.edit();
e.putString( key, value );
e.apply();
}
public void writePreferenceInt(String key, int value){
SharedPreferences.Editor e = mMyPreferences.edit();
e.putInt( key, value );
e.apply();
}
public String readPreferenceString( String key, String defaultVal) {
return mMyPreferences.getString( key, defaultVal );
}
public int readPreferenceInt( String key, int defaultVal) {
return mMyPreferences.getInt( key, defaultVal );
}
public boolean contains( String s ) {
return mMyPreferences.contains( s );
}
}
由于未知原因,pos
在我调用时得到 -1(0 是默认值):
if( PrefSingleton.getInstance().contains( "pos" ) ) {
int pos = PrefSingleton.getInstance().readPreferenceInt( "pos", 0 );
list.get( pos ).isChecked = true;
}
对这个类的所有其他调用都正常工作。 有人可以帮我理解这个问题吗?
最佳答案
这可能是您的问题 - Android getDefaultSharedPreferences . 我建议您使用独立的共享首选项文件,例如:
public void Initialize(Context ctx){
mMyPreferences = ctx.getSharedPreferences("MY_PREFS", ctx);
}
关于android - 当默认设置为 0 时,SharedPreferences getInt 返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54177685/