我试图保存我的交换机的状态。我已经在stackoverflow上检查了其他答案,但仍然没有弄清楚。使用偏好设置保存切换状态,布尔值不保存
我的主要活动有一个切换按钮(tgbutton)和开关(simpleSwitch1)。切换按钮的首选项工作,但切换不。不知道我是否正确保存了开关按钮的偏好设置,但是对于大多数其他论坛/他们所做的答案。
请指教,
public class MainActivity extends AppCompatActivity {
Switch simpleSwitch1;
boolean switchState2 = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initiate view's
simpleSwitch1 = (Switch) findViewById(R.id.simpleSwitch1);
SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyle", MODE_PRIVATE);
simpleSwitch1.setChecked(sharedPrefs.getBoolean("NameOfThingToSave",false));
switchState2 = sharedPrefs.getBoolean("NameOfThingToSave", false);
final ToggleButton tgbutton;
tgbutton = (ToggleButton) findViewById(R.id.toggle);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
tgbutton.setChecked(sharedPreferences.getBoolean("toggleButton", false)); //default is false
tgbutton.setOnClickListener(new ToggleButton.OnClickListener() {
public void onClick(View v) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("toggleButton", tgbutton.isChecked());
editor.commit();
}
});
simpleSwitch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("NameOfThingToSave", true);
editor.commit();
Toast.makeText(MainActivity.this, "This is on " + switchState2, Toast.LENGTH_SHORT).show();
} else {
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("NameOfThingToSave", false);
editor.commit();
Toast.makeText(MainActivity.this, "This is off " + switchState2, Toast.LENGTH_SHORT).show();
}
}
});
}
}
你为什么不先检查是否onCheckedChanged被称为可言,如果布尔值被保存下次检查,最后检查值正确恢复。 – Merlevede
嘿@Merlevede onCheckedChanged的作品,它正确的吐司,如果我改变状态从真到假。检查布尔值是否正在保存,我也烘烤了“switchState2”值,它应该是存储在开关状态的首选项,它保持为false,表明它没有正确保存,或者如果switchState2没有被保存正确初始化。 – ojboba
你的Toast是错误的,因为它总是显示原始的switchState2,而不是偏好。它应该是: 'Toast.makeText(MainActivity.this,“This is:”+ sharedPrefs.getBoolean(“NameOfThingToSave”,false),Toast.LENGTH_SHORT).show();' – Merlevede