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