布尔共享首选项未存储

时间:2015-07-27 16:54:16

标签: android boolean sharedpreferences

我正在开发一款Android游戏,在设置中可以选择关闭/开启游戏声音。 我想为游戏存储这些设置,为此我使用共享首选项来存储一个布尔值。 但是应用程序关闭后问题是布尔变量没有保存。 这是我的代码

按钮单击正在设置SharedPreference

的侦听器
volume.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (check == false) {
                check = true;
                PrefrencesClass.setBoolPreference(mContext,
                        Constants.APPSPREF, Constants.FIRSTTIME, true);
                volume.setBackgroundResource(R.drawable.mute);
                Log.e("Check is True", "Preference is True");
            } else if (check == true) {
                check = false;
                volume.setBackgroundResource(R.drawable.volume);

                PrefrencesClass.setBoolPreference(mContext,
                        Constants.APPSPREF,Constants.FIRSTTIME, false);
                Log.e("Check is false", "Preference is false");
            }

            Toast.makeText(getApplicationContext(), "Volume is Clicked",
                    Toast.LENGTH_SHORT).show();
        }
    });

我设置布尔值SharedPreference

的功能
public static final void setBoolPreference(Context base, String prefName,
        String key, boolean value) {

    SharedPreferences userPref = base.getSharedPreferences(prefName,
            Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = userPref.edit();
    editor.putBoolean(key, value);
    editor.commit();
}

这就是我获取SharedPreference

的方法
public static final boolean getBoolPreference(Context base,
        String prefName, String key) {

    SharedPreferences usePref = base.getSharedPreferences(prefName,
            Context.MODE_PRIVATE);
    boolean value = usePref.getBoolean(key, false);
    return value;
}

这是我需要使用sharedpreference已保存状态播放声音的代码

mPlayer = MediaPlayer.create(MainActivity.this, R.raw.stronghold);

    if (PrefrencesClass.getBoolPreference(context, Constants.APPSPREF,
            Constants.FIRSTTIME) == false) {
        mPlayer.start();
        mPlayer.setLooping(true);
    }

布尔状态未保存请帮助

2 个答案:

答案 0 :(得分:1)

试试这个

public static void saveBooleanToSharedPref(Context context, String key, boolean value){

        SharedPreferences settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean(key, value);
        editor.commit();

}//saveBooleanToSharedPref


public static boolean getBooleanBySharedPref(Context context, String key){

        SharedPreferences settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
        boolean value = settings.getBoolean(key, true);

        return value;

}//getStringBySharedPref

您的设置错误,因为您使用了putInt方法。

答案 1 :(得分:0)

你应该可以说:

source

您仍然可以设置if语句来设置图像背景。但我上面的内容应该减少你的很多代码。请记住将我在上面输入的活动替换为您自己的活动,也替换为布尔变量。