boolean变量不断变为false

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了boolean变量不断变为false相关的知识,希望对你有一定的参考价值。

在我的应用程序设置中,我有一个复选框,在选中时禁用后退按钮。我正在使用SharedPreferences。但问题是即使它是真的,当它在if语句中被检查时它会变为false。

Boolean isLockedB;

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
isLockedB = sharedPreferences.getBoolean("block_back",false);

当我调试时,它将isLockedB值显示为true,然后在这里:

@Override
public void onBackPressed() {
    if (drawerLayout.isDrawerOpen(Gravity.RIGHT)){
        drawerLayout.closeDrawer(Gravity.RIGHT);
    }else {
        if (isLockedB == false){
            super.onBackPressed();
        }else {
            return;
        }
    }
}

它表明我的isLockedB是假的。

答案

制作isLockedB static。你变量很可能被回收并重新设置为默认状态,对于布尔值是false

或者,您应该做的是创建一个包含SharedPreferences值的单例类。这样,如果您的单身人士为空,您将知道重新加载您的偏好。

另一答案
private Editor _prefsEditor = sharedPreferences.edit();
 _prefsEditor.putBoolean("block_back",true);

如果选中复选框,则设置值为true否则设置为false。由于您在下面的语句中将false设置为其默认值,因此总是为false。

isLockedB = sharedPreferences.getBoolean(“block_back”,false);

以上是关于boolean变量不断变为false的主要内容,如果未能解决你的问题,请参考以下文章

java的boolean类型的默认值不是false吗

Boolean数据类型

Boolean()方法强制转换时,返回值为false的情况

Boolean()方法强制转换时,返回值为false的情况

Boolean()方法强制转换时,返回值为false的情况

Boolean()方法强制转换时,返回值为false的情况