android - 当默认设置为 0 时,SharedPreferences getInt 返回 -1

标签 android sharedpreferences

我有一个包装了 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/

相关文章:

android - 是否可以在没有图标启动器的情况下启动语音命令 Activity ?

Android,canvas : How do I clear (delete contents of) a canvas (= bitmaps), 生活在surfaceView 中?

android - 使用更困惑的代码设计应用程序?

android - 在java中改变主题不会改变背景颜色

java - 如何根据登录状态从Button切换到FrameLayout

java - 将 android 项目转换为库项目

android - 日志滚动得太快

java - Android:当 ImageView 没有图像时防止转到下一个 Activity

java - SharedPreferences 始终返回自定义对象的默认值

android - 使用共享首选项添加 listvview 的收藏夹