java - 如何从保存的首选项中获取切换按钮并保存状态两次?
问题描述
我在尝试播放我的声音时遇到问题,播放第二个布尔值的代码,我想知道保存是否有问题。我有一个变量设置为私有静态 int,可以在1 和 2。然后我有一个 SharedPreferences 编辑器更改值,然后第三个我有一个可点击的按钮,可以读取两个不同场合的共享首选项。它根本不起作用而且我想知道是否可以使用静态 int 来更改单独的 SharedPreferences 场合。这是我的代码
按钮
toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch(ButtonConfig) {
case '1':
if(ButtonConfig == 1){
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(MY_BUTTON_PREF, isChecked);
editor.apply();}
break;
case '2':
if(ButtonConfig == 2){
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(AAA, isChecked);
editor.apply();}
break;
} }
});
播放按钮
Playx2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean flag = preferences.getBoolean(MY_BUTTON_PREF, false);
toggleButton.setChecked(flag);
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
boolean flag1 = preferences.getBoolean(AAA, false);
toggleButton.setChecked(flag1);
声明
Button Play;
private static int ButtonConfig;
public static int Options;
private static final String MY_SHARED_PREFERENCES = "SharedPreferences";
private static final String MY_BUTTON_PREF = "button1";
private static final String MY_SHARED_PREFERENCES2 = "SharedPreferences2";
private static final String AAA = "button500";
在外面我有我的 onClick 方法
public void D1(View view) {
boolean checked = ((ToggleButton) view).isChecked();
if (checked) {
switch (toggleButton) {
case '1':
if (ButtonConfig == 1) {
SharedPreferences.Editor editor = getSharedPreferences("SharedPreferences", MODE_PRIVATE).edit();
editor.putBoolean("button1", true);
editor.apply();
soundPool.play(sound1, 1, 1, 0, 0, 1);
}
break;
case '2':
if (ButtonConfig == 2) {
SharedPreferences.Editor editor = getSharedPreferences("SharedPreferences", MODE_PRIVATE).edit();
editor.putBoolean("button500", true);
editor.apply();
soundPool.play(sound2, 1, 1, 0, 0, 1);
}
break;
}
} else {
switch(ButtonConfig){
case '1' :
SharedPreferences.Editor editor = getSharedPreferences("SharedPreferences", MODE_PRIVATE).edit();
editor.putBoolean("button1", false);
editor.apply();
break;
case '2' :
editor = getSharedPreferences("SharedPreferences2", MODE_PRIVATE).edit();
editor.putBoolean("button500", false);
editor.apply();
break;
}
}}
public void S49(View view) {
boolean checked = ((ToggleButton) view).isChecked();
if (checked) {
ButtonConfig = 1;
}else{
}}
public void S50(View view) {
boolean checked = ((ToggleButton) view).isChecked();
if (checked) {
ButtonConfig = 2;
}else{
} }
这两个按钮有一个它们为案例返回的 int 值,但是每次我尝试加载两个单独的按钮值时,它都会将第一个加载为选中,第二个加载为未选中。声音也不会在案例陈述中播放,但如果我把它们带到外面,它们就可以了。任何人都可以帮忙吗?我真的很感激
解决方案
我想通了,事实证明我需要检索两个布尔值并且不能使用 int 来检索值。