boolean变量不断变为false

时间:2017-12-22 15:41:04

标签: java android if-statement boolean sharedpreferences

在我的应用设置中,我有一个复选框,可在选中时禁用后退按钮。 我正在使用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是假的。

2 个答案:

答案 0 :(得分:1)

制作isLockedB static。你变量很可能被回收并恢复到默认状态,对于布尔值是false

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

答案 1 :(得分:-1)

private Editor _prefsEditor = sharedPreferences.edit();
 _prefsEditor.putBoolean("block_back",true);

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

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