boolean变量不断变为false

问题描述 投票:0回答:2

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

java android if-statement boolean sharedpreferences
2个回答
1
投票

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

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


-1
投票
private Editor _prefsEditor = sharedPreferences.edit();
 _prefsEditor.putBoolean("block_back",true);

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

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

© www.soinside.com 2019 - 2024. All rights reserved.