首页 > 解决方案 > 如何从保存的首选项中获取切换按钮并保存状态两次?

问题描述

我在尝试播放我的声音时遇到问题,播放第二个布尔值的代码,我想知道保存是否有问题。我有一个变量设置为私有静态 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 值,但是每次我尝试加载两个单独的按钮值时,它都会将第一个加载为选中,第二个加载为未选中。声音也不会在案例陈述中播放,但如果我把它们带到外面,它们就可以了。任何人都可以帮忙吗?我真的很感激

标签: javaandroidsavetoggle

解决方案


我想通了,事实证明我需要检索两个布尔值并且不能使用 int 来检索值。


推荐阅读